Despite rumours he would make a major announcement his speech stuck largely to defending Russia's invasion.
He tied the war in Ukraine to victory in 1945, blaming the West and Nato for rejecting security demands.
Almost 10 weeks into the invasion, civilian casualties continue to mount.
Some 60 civilians are feared dead in the eastern town of Bilohorivka, after a Russian attack on a school where people were trying to escape bombardment.
Flanked by military top brass, Russia's leader spoke of Ukrainians as fascists, repeating his false claim that the democratic government in Kyiv was run by neo-Nazis.
Defending the motherland had always been sacred, he said, referring to the eastern region which is now the main focus of Russia's assault: "Today you are fighting for our people in Donbas, for the security of Russia, our homeland."
He also made unfounded allegations against Nato and Ukraine, saying: "They were preparing a punishing operation in Donbas to intrude on our historic lands. In Kyiv they were saying they might get nuclear weapons and Nato started exploring the lands close to us, and that became an obvious threat to us and our borders."
Ending his 11-minute address, the Russian president said: "Glory to our armed forces - for Russia, for victory, hoorah", at which the assembled forces responded with a big cheer.
Russian news agencies said 11,000 troops and 131 armoured vehicles took part in the event, including Russia's widely feted Armata tanks, which have not been considered combat-ready for the war in Ukraine. Smaller parades were planned to mark the day in cities across Russia.
Not everything went according to plan. A flypast by the air force had to be cancelled shortly before the parade because of "weather conditions", according to the Kremlin.
Ahead of Victory Day, warplanes had rehearsed over Red Square in a Z-formation, the motif used by the Russian state during its war in Ukraine. There were no obvious adverse weather conditions in Moscow on Monday, with plenty of sunshine through the clouds.
Russia was able to claim limited success on Monday in Kherson, the one Ukrainian city it can claim to have fully occupied.
State-run news agency Ria Novosti showed footage of a Victory Day march in memory of those who died in the war.
It was led by Volodymyr Saldo, a pro-Russian local official who has been named Kherson governor and is now being investigated for treason by Ukraine.
What was then the Soviet Union lost 27 million lives during World War II, with Ukraine accounting for eight million of them.
In a separate message marking 9 May, President Volodymyr Zelensky said Nazis had been expelled in 1945 and Ukraine would not allow anyone to "annex this victory". Very soon, he said, Ukraine would have two victory days to celebrate.
Russian President Vladimir Putin leaves Red Square after the Victory Day military parade in central Moscow on May 9, 2022. Photo: AFP or licensors