Ukrainian President Volodymyr Zelenskyy has said his country must recognise that it will not join Nato, hinting at a compromise that addresses a key Russian concern about the military alliance growing.
Mr Zelenskyy's comments on Tuesday came as Russian forces pushed further towards Kyiv with deadly strikes on residential buildings, despite a new round of talks aimed at halting the war.
He said Ukraine should accept that it would not join Nato and that Kyiv was prepared to have security guarantees instead of joining.
"We have heard for years that the doors were open but we also heard that we could not join," Mr Zelenskyy told a video conference with military officials. "It's a truth and it must be recognised.
"If we cannot enter through open doors, then we must co-operate with the associations with which we can, which will help us, protect us ... and have separate guarantees."
Moscow has repeatedly called for guarantees that Ukraine would not join the alliance. Western nations say it is a country's sovereign right to apply to join.
Peace talks resumed between Russian and Ukrainian delegations by video link.
Ukrainian officials played up hopes that the war could end sooner than expected, saying Moscow may be coming to terms with its failure to impose a new government in Kyiv by force.
Mr Zelenskyy called on Russian troops to surrender.
"You will not take anything from Ukraine. You will take lives," he said in a video message. "But why should you die? What for? I know that you want to survive."
Kremlin spokesman Dmitry Peskov said it was too early to predict progress in peace talks.
"The work is difficult and in the current situation the very fact that they are continuing is probably positive," Mr Peskov said.
One of Mr Zelenskyy's top aides said the war would be over by May or even within weeks, as Russia had run out of fresh troops.
Three weeks into Russia's invasion of its pro-western neighbour, more than three million people have been forced to flee to neighbouring countries and 97 Ukrainian children have died, Mr Zelenskyy told Canadian members of Parliament in a video appearance on Tuesday.
The UN has recorded at least 691 civilian deaths, including 48 children, since Russia invaded Ukraine on February 24, although it believes the true figures are far higher.
Meanwhile the leaders of Poland, the Czech Republic and Slovenia arrived in Ukraine’s capital on a mission to show support.
The visit by Slovenia's Janez Jansa, Poland's Mateusz Morawiecki and Czech leader Petr Fiala is the first by such a delegation since the war broke out.
Their train trip to a city under bombardment was described by the Polish leader's chief of staff as "a historic event" and an "unequivocal expression of support for Ukraine" by the three EU member states.
"It is our duty to be where history is forged because it's not about us, but about the future of our children who deserve to live in a world free from tyranny," Mr Morawiecki said.
Mr Zelenskyy, who is due to address the US Congress on Wednesday, again called on western nations to “close the sky” and impose a no-fly zone above Ukraine.
“Please stop the bombing,” he pleaded in his address to Canadian politicians. “How many more cruise missiles have to fall on our cities until you make this happen?”
Nato foreign ministers have rejected a no-fly zone because of fears that it could be regarded as an escalation against nuclear-superpower Russia.
Agencies contributed to this report.