Belkov, who rides for Katusha, won in a time of four hours 31 minutes 31 seconds, beating Carlos Betancur by 44 seconds following a long solo escape on the wet and hilly 170-kilometre ride from San Sepolcro to Florence. Jarlinson Pantano was third, 46 seconds behind Belkov.
Belkov attacked 50 kilometres from the finish and maintained his advantage for his first Grand Tour stage victory.
"I'm so happy I won this stage, my first as a pro if we exclude the team time trial," Belkov said. "I would like to dedicate it to the Katusha project. From this morning on the bus I realized it was a perfect stage for my characteristics. Moreover, I live next to here, in Prato, so I know these roads.
"I'm thrilled I won this stage. Katusha is proving to be a really strong team here in the Giro. It's the second win, we kept the jersey for five days, and we want to continue like this in order to take some other great results. Yesterday I didn't do a great job. But I decided to save my legs for today, a stage dedicated to breakaways. Better a first position today than a 10th place yesterday."
Nibali finished 10th to retain the pink jersey. Defending champion Ryder Hesjedal of Victoria dropped out of the top 10 and is now more than three minutes behind the Italian.
Nibali's main rival, Bradley Wiggins, dropped nearly a minute behind the peloton during the stage but was helped back by his Sky teammates.
Nibali is nearly half a minute in front of second-place Cadel Evans of Australia. Wiggins remained fourth in the overall standings, 1:16 off the pace.
Belkov was part of an early 12-man breakaway that built a lead of nearly five minutes at the top of the first climb of the day, the category-2 Passo della Consum.
Robinson Chalapud and Stefano Pirazzi broke clear of the group and were swiftly joined by Belkov. The Russian jumped clear of the duo, during heavy rain and fog on the second descent of the day, after the category-1 Vallombrosa climb.
Belkov built a lead of more than three minutes from his chasers and nearly seven minutes on the peloton as the rain began to ease up.
Pantano closed the gap on the next-to-last climb, and the peloton sped up but Belkov still had a minute advantage going into the final kilometre.
Betancur caught Pantano and Tobias Ludvigsson on the approach to the finish and outsprinted his fellow Colombian to second place.
Monday is a rest day, before a 167-kilometre ride on Tuesday in the 10th stage through the mountains from Cordenons to Altopiano del Montasio.
The Giro ends May 26 in Brescia.