Ecuador's Richard Carapaz secured his second stage win of this year's Giro d'Italia to take the lead in the overall standings.
The Movistar rider, 25, broke clear on the Giro's toughest climb yet to claim victory at the stage 14 summit finish.
Carapaz claimed the Maglia Rosa from Jan Polanc having edged ahead of Primoz Roglic, who is seven seconds back.
Britain's Simon Yates, 26, came second after attacking on the last kilometre to force his way back into the top 10.
Last year's Vuelta a Espana winner was dropped on the penultimate Colle San Carlo climb but fought back on the final mountain to catch a group of the leading contenders.
He then attacked and crossed the line one minute 32 seconds behind Carapaz on the 131km mountainous stage from Saint Vincent to Courmayeur.
Two-time Giro winner Vicenzo Nibali crossed third in Courmayeur to move from fifth to third in the overall standings.
"I worked so hard for this, it's a real dream come true," said Carapaz, who finished fourth on his Giro debut in 2018.
"I felt good this morning. We knew the altitude was good for me. I gave it everything because I knew the entire Giro was at stake.
"The 30 seconds I gained on the penultimate climb were enough to allow me to build the lead I needed."
It was on that climb, the Colle San Carlo, that overnight leader Polanc dropped back, ultimately losing almost eight minutes on the day.
Nibali and Roglic battled it out on the Colle San Carlo descent and remain the race favourites, although Carapaz has now established himself as a contender.
Sunday's stage is one of the longest on the Giro at 232km, starting with a 160km flat section before the race swings into a series of short but challenging climbs and descents.
Stage 14 results
1. Richard Carapaz (Ecu/Movistar) 4hrs 2mins 23secs
2. Simon Yates (Gbr/Mitchelton-Scott) +1min 32secs
3. Vincenzo Nibali (Ita/Bahrain-Merida) +1min 54secs
4. Rafal Majka (Pol/Bora-Hansgrohe) Same time
5. Mikel Landa (Esp/Movistar)
6. Miguel Angel Lopez (Col/Astana)
7. Pavel Sivakov (Rus/Ineos)
8. Primoz Roglic (Slo/Jumbo-Visma)
9. Joe Dombrowski (USA/EF Education First)
10. Damiano Caruso (Ita/Bahrain-Merida) +2mins 1secs
General classification after stage 14
1. Richard Carapaz (Ecu/Movistar) 58hrs 35mins 34secs
2. Primoz Roglic (Slo/Jumbo-Visma) +7secs
3. Vincenzo Nibali (Ita/Bahrain-Merida) +1min 47secs
4. Rafal Majka (Pol/Bora-Hansgrohe) +2mins 10secs
5. Mikel Landa (Spa/Movistar) +2mins 50secs
6. Bauke Mollema (Ned/Trek-Segafredo) +2mins 58secs
7. Jan Polanc (Slo/UAE Emirates) +3mins 29secs
8. Pavel Sivakov (Rus/Ineos) +4mins 55secs
9. Simon Yates (GB/Mitchelton-Scott) +5mins 28secs
10. Miguel Angel Lopez (Col/Astana) +5mins 30secs