A member of the day’s breakaway, Katusha’s Zakarin went solo in the final climb to beat Mikel Nieve (Mitchelton-Scott) by 35 seconds and another Mikel Landa (Movistar), by 80 seconds with Jan Polanc (UAE Team Emirates) retaining the overall leader’s pink jersey.
Roglic (Jumbo-Visma) and Nibali (Bahrain-Merida) crossed the line 2min 57sec off the pace after allowing several riders to come back into the game.
“I didn’t have any plan for winning this stage," Zakarin said. "I went in the breakaway with the aim of making up some time on GC. This win is a little bit of a surprise for me.
"I just rode the last climb with all the energy and the power I had. I’m happy with what I’ve achieved today. Roglic is really strong. He’s the number one favourite but I’ll try to take the Maglia Rosa in the coming stages.”
It was another bad day for Simon Yates (Mitchelton-Scott) who finished five minutes behind Zakarin after already losing considerable ground in last Sunday’s individual time trial.
Yates cracked after Landa attacked early in the last climb, a 20.3km climb up to Lake Serru, the Movistar rider benefiting from the help of several team-mates.
Another top contender, Miguel Angel Lopez (Astana), dropped out in the last ascent after suffering mechanical problems and reached the finish 4min 19sec down on Zakarin.
Overall, Polanc leads Roglic by 2min 25sec with Zakarin third 2min 56sec off the pace.
Bauke Mollema (Trek-Segafredo), who moved into solid contention for a final podium place on the stage, is fourth, 3min 6sec behind Polanc, with Nibali 4min 9sec down on the leader.
Saturday’s 14th stage is another gruelling 131km mountain ride from Saint Vincent to Courmayeur featuring five categorised climbs.