Russian missile attacks on residential areas killed at least 21 people in a Ukrainian town near Odesa early on Friday, authorities said.
The airstrikes pierced the cautious relief expressed a day earlier after Russian forces withdrew from a Black Sea island where they could have staged an assault on the city with Ukraine’s biggest port.
Video of the pre-dawn attack showed the charred remains of buildings in the small town of Serhiivka, about 31 miles southwest of Odesa.
The Ukrainian president’s office said three X-22 missiles fired by Russian bombers struck a block of flats and a campsite.
“A terrorist country is killing our people. In response to defeats on the battlefield, they fight civilians,” Andriy Yermak, the chief of staff to Ukrainian president Volodymyr Zelenskyy said.
Large numbers of civilians died in Russian strikes and shelling earlier in the war, including at a hospital, a theatre used as a bomb shelter and a train station.
Until this week, mass casualties involving residents appeared to become more infrequent as Moscow concentrated on capturing eastern Ukraine’s Donbas region.
Asked about Friday’s strike, Kremlin spokesman Dmitry Peskov repeated Moscow’s claim that it was not targeting residential areas during the war, which is now in its fifth month.
The Russian military is trying to strike munitions depots, weapon repair factories and troop training facilities, he said.
Ukraine’s security service said 19 people died, including two children. It said another 38, including six children and a pregnant woman, were admitted to hospital.
Most of the victims were in the apartment building, Ukrainian emergency officials said.
The airstrikes followed the withdrawal of Russian forces from Snake Island on Thursday, a move that was expected to potentially ease the threat to nearby Odesa, 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 war in the apparent hope of using it as a staging ground for an assault on Odesa.
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 war as a symbol of Ukraine’s resistance to the Russian invasion.
Ukrainian troops there reportedly received a demand from a Russian warship to surrender or be bombed. The answer supposedly came back: “Go (expletive) yourself.”
Mr Zelenskyy said that although the withdrawal 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 Donbas region.
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,” Mr Haidai told The Associated Press.
“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.”
The offensive has failed so far to cut Ukrainian supply lines, although the main road leading west was not being used because of constant Russian shelling, the governor said. “The evacuation is impossible,” he added.
But Russian defence ministry spokesman Igor Konashenkov said on Friday that Russian and Luhansk separatist forces had taken control of the refinery as well as a mine and a gelatine factory in Lysychansk “over the last three days”.
Ukraine’s presidential office said a series of Russian strikes in the past 24 hours also killed civilians in eastern Ukraine – four in the north-eastern Kharkiv region and another four in Donetsk province.
In other developments, Mr Zelenskyy asked Ukrainian MPs to fast track the legislation needed for the country to join the European Union.
His government applied for EU membership after Russia’s February 24 invasion. EU leaders made Ukraine a candidate for membership last week, acting with unusual speed and unity.
The process could take years or even decades, but Mr Zelenskyy said that Ukraine cannot wait.
“We needed 115 days to receive the status of a EU candidate. Our path to a full-fledged membership mustn’t take decades,” he said.
“You may be aware that some of your decisions will not be met with applause, but such decisions are necessary for Ukraine to advance on its path forward, and you must make them.”
In Moscow on Friday, Russian president Vladimir Putin briefed Indian prime minister Narendra Modi on the conflict in Ukraine.
A Kremlin statement said Mr Putin blamed Mr Zelenskyy’s administration and Ukraine’s western supporters for allegedly trying “to escalate the crisis and disrupt efforts to resolve it politically and diplomatically”.
Mr Putin has denied that Russian forces targeted a shopping centre where Ukrainian authorities said a missile strike on Monday killed at least 19 people and injured another 62.
He claimed Thursday that the target in Kremenchuk, a city in central Ukraine, was a nearby weapons depot and that the Russian military does not take aim at places occupied by civilians.