The missiles slammed into an apartment building and a recreation centre in the town of Serhiivka about 80 kilometres (50 miles) south of the Black Sea port of Odessa, a strategic flashpoint in the conflict.

Two children were among the dead and six others among the injured, Ukrainian officials say.
Two children were among the dead and six others among the injured, Ukrainian officials say. (AFP)

Russian missile attacks on residential areas in a coastal town near the Ukrainian port city of Odessa have killed at least 21 people, authorities have reported.

Video of Friday's pre-dawn attack showed the charred remains of buildings in the small town of Serhiivka, located about 50 kilometres (31 miles) southwest of Odessa.

The Ukrainian president's office said three X-22 missiles fired by Russian bombers struck an apartment building and two campsites.

"The death toll in Odessa blast rose to 21," Sergiy Bratchuk, Odessa deputy chief of district, told Ukrainian television. A 12-year-old boy was among the dead, he added.

The country's head of emergency services, Sergiy Kruk, had earlier put the toll at 19. Thirty-eight people were wounded, including six children, he added on Facebook.

The Kremlin dismissed allegations that Russian missiles had struck the residential apartments.

"I would like to remind you of the president's words that the Russian Armed Forces do not work with civilian targets," Kremlin spokesperson Dmitry Peskov said on a conference call with reporters.

READ MORE: NATO describes Russia as a 'direct threat' to allies' sovereignty

Snake Island withdrawal

The airstrikes followed the pullout of Russian forces from Snake Island on Thursday, a move that was expected to potentially ease the threat to nearby Odessa, home to Ukraine’s biggest port.

The island sits along a busy shipping lane. Russia took control of it in the opening days of the conflict in the apparent hope of using it as a staging ground for an assault on Odessa.

The Kremlin portrayed the departure of Russian troops from Snake Island as a “goodwill gesture” intended to facilitate shipments of grain and other agricultural products to Africa, the Middle East and other parts of the world.

Ukraine’s military claimed a barrage of its artillery and missiles forced the Russians to flee in two small speedboats. The exact number of withdrawing troops was not disclosed.

The island took on significance early in the conflict as a symbol of Ukraine’s resistance. Ukrainian troops there reportedly received a demand from a Russian warship to surrender or be bombed, but they refused to budge while supposedly hurling expletives at Moscow's forces.

READ MORE: Putin vows to answer in kind to NATO infrastructure in Nordic nations

'Step by step' pushback

Ukrainian President Volodymyr Zelenskyy said that although the pullout did not guarantee the Black Sea region’s safety, it would “significantly limit” Russian activities there.

“Step by step, we will push (Russia) out of our sea, our land, our sky,” he said in his nightly address.

In eastern Ukraine, Russian forces kept up their push to encircle the last stronghold of resistance in Luhansk, one of two provinces that make up the country's Donbass region, where Moscow-backed separatists have controlled much of the region for eight years.

Luhansk governor Serhiy Haidai said the Russians were trying to encircle the city of Lysychansk and fighting for control over an oil refinery on the city’s edge.

The shelling of the city is very intensive...The occupiers are destroying one house after another with heavy artillery and other weapons. Residents of Lysychansk are hiding in basements almost round the clock

Luhansk governor Serhiy Haidai

READ MORE: G7 leaders pledge to hurt Russia economically as they wrap up summit