In a stern and combative recorded video message, broadcast on national television, Putin cast the war - which he calls a "special military operation" - as a near-existential fight for the future of Russia.
Its soldiers, he said, were fighting for "our motherland, truth and justice ... so that Russia's security can be guaranteed."
For months, the Kremlin presented the conflict as a limited campaign that would not affect most Russians' lives.
But the speech, delivered in front of grim-faced soldiers in combat uniform, put the war squarely centre-stage, telling families gathered for the year's main celebration that the months ahead would require support and sacrifice from everyone.
The message was being broadcast into millions of homes on state TV just before the clocks struck midnight in each of Russia's 11 time zones, as families tucked into a festive meal and exchanged gifts.
As the war drags into its 11th month with no end in sight, the Kremlin has slowly put society on more of a war footing - calling up more than 300,000 reservists, often in chaotic fashion, retooling an economy hurt by a barrage of Western sanctions and saying publicly that the conflict may be long.
Moscow was unprepared for the staunch resistance and the billions of dollars in Western weapons that have turned the tide in Ukraine's favour, and Russian troops have been forced out of more than half the territory they took in the war's first weeks.
In the nine-minute address - the longest of his 22 years in power - Putin targeted those opposed to the conflict, a personal crusade that now defines his tenure and Russia's relations with the world.
The past year, he said, had "put a lot of things in their place - clearly separating courage and heroism from betrayal and cowardice."
In a rejection of Kyiv's calls for Russian troops to leave as a precursor to negotiations, Putin said Russia was "defending our people and our historical territory".
He also accused the West of lying to Russia and of provoking Moscow to launch its military campaign.
"The West lied about peace," Putin said. "It was preparing for aggression ... and now they are cynically using Ukraine and its people to weaken and split Russia.
"We have never allowed this, and never will allow anybody to do this to us."
Kyiv and the West reject Putin's oft-repeated allegation that the Western Nato alliance planned to use Ukraine as a platform to threaten Russia, and say he launched a baseless war of aggression in a bid to seize territory and install a regime more to his liking.
Although Russia has not made any major battlefield gains in the past six months, Putin promised ultimate victory.
Russia fired more than 20 cruise missiles at targets in Ukraine on Saturday, killing at least one person in Kyiv, in attacks President Volodymyr Zelenskiy said showed Moscow was in league with the devil.
Zelenskiy speaking in a video address noted that Russia had also launched attacks at Easter and Christmas.
"They call themselves Christians ... but they are for the devil. They are for him and with him," he said.
Zelenskiy in comments addressed to Russian speakers said President Vladimir Putin was destroying Russia's future.
"No one will forgive you for terror. No one in the world will forgive you for this. Ukraine will not forgive," he said, reiterating calls for allies to supply more anti-aircraft and anti-missile systems.
The second barrage of major Russian missile attacks in three days badly damaged a Kyiv hotel and a residential building.
At least a dozen people were injured in the attacks. A Japanese journalist was among the wounded and taken to a hospital, Kyiv mayor Vitali Klitschko said.
Other cities across Ukraine also came under fire. In the southern region of Mykolaiv, local governor Vitaliy Kim on television said that six people had been wounded.
In the western city of Khmelnytskyi, two people were wounded in a drone attack, Ukrainian presidential aide Kyrylo Tymoshenko said.
He also reported a strike in the southern industrial city of Zaporizhzhia, which Tymoshenko said had damaged residential buildings.
Russia and Ukraine said on Saturday they had freed more than 200 captured soldiers, the latest prisoner exchange between the two sides in the 10-month-old conflict.
Russia's Defence Ministry said 82 Russian soldiers had been released by Ukraine, while the Ukrainian president's chief of staff, Andriy Yermak, said Russia had handed over 140 Ukrainian service personnel.
Some of the 132 Ukrainian men and eight women who were freed had been wounded or had fought to defend the Black Sea port city of Mariupol and on Snake Island, Yermak said in a message on his Telegram page.
The two sides have exchanged hundreds of captured soldiers in several rounds of prisoner exchanges in recent months, despite a complete breakdown in broader diplomatic talks between Moscow and Kyiv.