A Russian drone strike killed at least 14 people on a crowded rail platform in the Ukrainian city of Dnipro on Thursday, while five died in daytime strikes on two other provincial cities and a late-evening missile strike killed one person in the capital Kyiv, officials said.
The string of attacks jolted Ukrainian cities as a local truce in the southern region of Kherson raised cautious hopes for a resumption of diplomacy.
"Russia is deliberately hunting civilians: on trains, at stations, in residential buildings," Ukrainian Prime Minister Sergiy Koretskyi said on the Telegram app.
"There is no justification for this terror, and there never can be."
A new missile attack hit districts of Kyiv just before 11 pm (2100 GMT) killing one person, the city's military administration said. Warehouses were set ablaze and falling debris damaged a building on the east side of the Dnipro River.
A few hours earlier, Ukrainian President Volodymyr Zelenskiy had described the attacks as "very cruel" and "deliberate when everyone expects de-escalation steps".
Zelenskiy warned that Ukraine had intelligence "about preparations by the Russians of new ballistic missile strikes. We need the means to take out all this Russian evil. We are expecting relevant decisions."
The six-day truce brokered with US help applied only to southern Ukraine's Kherson region, where a humanitarian mission was underway to provide relief to the Russian-held town of Oleshky, marooned in a war zone since the start of Moscow's 2022 invasion.
Both sides issued virtually identical statements saying de-mining operations had been completed and the operation could begin to allow aid into the town and permit residents to head out if they wanted to leave.
Elsewhere, Russian drone and missile attacks on critical infrastructure including the rail network have upended civilian life and ravaged the economy. The strikes have exploited an acute shortage of air defence missiles.