After just over 12 weeks of fierce fighting, Ukrainian forces have halted Russian attempts to seize Kyiv and the northern city of Kharkiv, but are under renewed and intense pressure in the eastern Donbas region.
Moscow's army have flattened and seized the southeastern port city of Mariupol and subjected Ukrainian troops and towns in the east to a remorseless ground and artillery attack.
Zelensky's Western allies have shipped modern weaponry to his forces and imposed sweeping sanctions on the Russian economy and President Vladimir Putin's inner circle.
But the Kremlin has responded by disrupting European energy supplies, and on Saturday cut off gas shipments to Finland, which angered Moscow by applying to join the NATO alliance.
'It will be bloody'
Against this backdrop, Zelensky told Ukrainian television the war would end "through diplomacy".
The conflict, he warned, "will be bloody, there will be fighting but will only definitively end through diplomacy" -- promising only that the result would be "fair" for Ukraine.
"Discussions between Ukraine and Russia will decidedly take place. Under what format I don't know -- with intermediaries, without them, in a broader group, at presidential level," he said.
In order to side-step financial sanctions and force European energy clients to prop up his central bank, Putin has demanded that importers from "unfriendly countries" pay for gas in rubles.
Russian energy giant Gazprom said it had halted supplies to neighbouring Finland as it had not received ruble payments from Finland's state-owned energy company Gasum by the end of Friday.
Gazprom supplied 1.49 billion cubic metres of natural gas to Finland in 2021, about two thirds of the country's gas consumption but only eight percent of its total energy use.
Gasum said it would make up for the shortfall from other sources, through the Balticconnector pipeline, which links Finland to Estonia, a fellow European Union member.
Moscow cut off gas to Poland and Bulgaria last month in a move the European Union described as "blackmail", but importers in some other EU countries more dependent on Russian gas plan to open ruble accounts with Gazprom's bank.
Finland and neighbouring Sweden this week broke their historical military non-alignment and applied to join NATO, after public support for the alliance soared following Russia's invasion of Ukraine.
Moscow has warned Finland that joining NATO would be "a grave mistake with far-reaching consequences" and defence minister Sergei Shoigu said it would respond by building military bases in western Russia.
But both Finland and Sweden are now apparently on the fast track to join the military alliance, with US president Joe Biden this week offering "full, total, complete backing" to their bids.
All 30 existing NATO members must agree on any new entrants, and Turkey has condemned Sweden's alleged toleration of Kurdish militants, but diplomats are confident of avoiding a veto.
On the ground in Ukraine, the fighting is fiercest in the eastern region of Donbas, a Russian-speaking area that has been partially controlled by pro-Kremlin separatists since 2014.
"They completely ruined Rubizhne, Vonokvakha, just as they did Mariupol," Zelensky said Friday, adding that the Russians were "trying to do the same with Severodonetsk and many other cities".
In Severodonetsk, a frontline city now at risk of encirclement, 12 people were killed and another 40 wounded by Russian shelling, the regional governor said.
'End of the operation'
Zelensky described the bombardment of Severodonetsk as "brutal and absolutely pointless", as residents cowering in basements described an unending ordeal of terror.
The city forms part of the last pocket of Ukrainian resistance in Lugansk, which along with the neighbouring region of Donetsk comprises the Donbas war zone.
The Russian defence ministry, meanwhile, claimed it had destroyed a large shipment of US and European weapons in a long-range missile strike targeting the Malin railway station west of Kyiv in the Zhytomyr region.
There was no Ukrainian or independent confirmation of the success of the strike.
On Friday, Moscow said the battle for the Azovstal steelworks in Mariupol -- a symbol of Ukraine's dogged resistance since Putin launched the invasion on 24 February -- was now over.
Russian defence ministry spokesman Igor Konashenko said 2,439 Ukrainian personnel had surrendered at the steelworks since 16 May, the final 500 on Friday.
Ukraine hopes to exchange the surrendering Azovstal soldiers for Russian prisoners. But in Donetsk, pro-Kremlin authorities are threatening to put some of them on trial.
Biden has cast the Ukraine war as part of a US-led struggle pitting democracy against authoritarianism.
The US Congress this week approved a $40-billion (38-billion-euro) aid package, including funds to enhance Ukraine's armoured vehicle fleet and air defence system.
And, meeting in Germany, G7 industrialised nations pledged $19.8 billion to shore up Ukraine's shattered public finances.
While the invasion has ebbed around the north-eastern city of Kharkiv, it remains in Russian artillery range, and hundreds of people are refusing to leave the relative safety of its metro system.
"We're tired. You can see what home comforts that we have," said Kateryna Talpa, 35, pointing to mattresses and sheets on the ground, and some food in a cardboard box.
She and her husband Yuriy are doing their best to cope in the Soviet-era station called "Heroes of Labour", alongside their cats Marek and Sima.
"They got used to it," Talpa said.