The 26-year-old Russian waited patiently in the select final group that also contained Tinkoff’s Alberto Contador, BMC Racing’s Richie Porte and Team Sky’s Geraint Thomas and Sergio Henao.
With the finish line in sight, Zakarin clung to the wheel of Thomas as the British rider attacked and opened a small gap to Contador, while Porte and Henao lost the pace.
Within metres of the finish line, Zakarin surged past Thomas to take the stage win, his first of 2016 and the fifth of his professional career.
“I am really happy with this victory,” Zakarin said. “I was preparing for this race at altitude, so I was able to get a good form. I wanted to fight for a good result in this race. Today I knew it would be hard, but I felt really good today.”
Porte attacked the group first inside the final kilometre, but Zakarin was right on the Australian's wheel. When the group came back together, Contador accelerated but Zakarin was again able follow the move. Zakarin followed Thomas through the final corner and stuck with the Sky rider as he tried to accelerate away, eventually overtaking him at the line with Contador one second behind.
“I knew there were two hard moments in this climb at 6km to go and 500 meters to go," Zakarin said. “So I just did my best to pass it and to save the energy for last few hundred meters, where I gave my best.”
Katusha director Dmitry Konyshev heaped praise on his young rider.
“We knew Contador, Porte and Thomas would attack and our plan was to follow them and to see what would happen in the final,” Konyshev said. “Ilnur did an amazing race - he did everything he had to do to get the maximum result.”
With only Sunday’s 141km stage around Nice remaining, Thomas leads the general classification by 15 seconds over Contador and another five to Zakarin. Porte is another second back in fourth.
The final stage has six classified climbs, the last topping out with 15km to go before a descent to the finish. Both Konyshev and Zakarin said the goal for Sunday would be to maintain Zakarin’s spot on the podium.
“Tomorrow is another hard day," Zakarin said. “I am third now and I want to save my podium place. We will do our best tomorrow.”
Click here to subscribe to the Cyclingnews video channel.