Thousands of people lined the streets to greet the Kremlin strongman as he attended a military parade marking the 70th anniversary of Belgrade's liberation from Nazi occupation.
The event -- the first military parade in Belgrade in 30 years -- was brought forward by four days to coincide with Putin's visit.
Shortly before his arrival, Putin accused his US counterpart Barack Obama of a hostile approach towards Russia, warning in a Cold War-style tirade that Moscow would not be blackmailed by the West over the conflict in Ukraine.
"Next May we will together celebrate the 70th anniversary of the great victory," the end of World War II, he told the crowds chanting his name at the parade.
Also Read
"It is our joint obligation to remember lessons from World War II and to stand against attempts to glorify Nazis and their allies, to unite efforts in creating an atmosphere of trust and mutual understanding on the European continent," he said.
Despite heavy rain, more than 3,000 soldiers joined the Belgrade parade, which also featured a Russian aerobatics display but was pointedly not attended by any US officials.
The visit was also used as an opportunity for Serbia to once again make clear its role as a loyal friend of Russia.
Despite seeking membership of the EU, Serbia has refused to align with the bloc's increasingly punishing sanctions against Moscow over the Ukraine crisis.