Chris Froome held off fellow Briton Simon Yates to win a first ever stage of the Giro d'Italia - a thriller on Monte Zoncolan.
Yates finished six seconds behind Froome and stretched his overall lead over Tom Dumoulin to one minute 24 seconds with the reigning champion holding on impressively to come home fifth.
The infamous Zoncolan is known as the hardest climb in European cycling, and the huge crowds lining its upper slopes were treated to an epic finale.
This was redemption of sorts for Sky's Froome after an injury-hit first two weeks.
- Simon Yates' Giro d'Italia stage-by-stage guide
- Bespoke podcast: Chris Froome can still win title despite deficit, says Brailsford
Froome's stage win means he leaps up to fifth in the overall standings, but he is still three minutes 10 seconds down on race leader Yates.
Dumoulin, the world time-trial champion, is expected to take at least a minute and a half out of Yates on Tuesday's 34.2km time trial, which meant that Mitchelton-Scott rider Yates had targeted Saturday's tough stage as one where he could try to bank significant time as the the pair battle for supremacy.
And for the Dutchman to lose only 38 seconds - 32 on the day and six more for Yates' second place on the stage - represents a fine return for a man who is not a natural climber.
The Zoncolan averages 11.9% over its 10.1km length, with a maximum gradient of 22%. The Tour de France's better-known Alpe d'Huez averages 8%, with a maximum of 12%, while Mont Ventoux is far longer at 21.5km but averaging just over 7%.
Davide Formolo and Fabio Aru were the first of the big boys to feel the pain, dropping back with 6km to the summit.
Froome had team-mate Wout Pouls working with him, and the Team Sky pair led into the final 5km with Yates sitting third, Domenico Pozzovivo just behind and Dumoulin hanging on with Thibaut Pinot, who had begun the day third in the general classification.
On long sections of 15% section, the group thinned and drew away from the rest, and with 4.2km to go Froome attacked for the first time in this Giro.
He quickly built a small gap over Pozzovivo and Miguel Angel Lopez, Yates joining them as Dumoulin tried to maintain a steady pace rather than respond to the acceleration.
At 3km Yates made his own move, dropping the Italian and Colombian with glorious ease and hunting down the troubled Froome as the gap to Dumoulin began to stretch.
With 1500m of climbing to go that advantage for the young Briton over his main rival was up to 24 seconds, and he stretched that a little further by the finish even as he could not quite catch an exhausted Froome in a frenzied last few metres.
Froome said: "It is a really special feeling winning on top of that climb. On such a monumental climb for the race and in general is such a good feeling after a such a tough start to this race for me.
"I felt like 4km was the moment when the race was on the limit and was the moment to go. The team had done a great job pulling me to that point, but right to the line Simon was right on me.
"I didn't know if he was going to catch me, so it was such a relief to get into that final 100m."
No Briton has ever won the Giro, and Yates knows that his own bid still hangs in the balance with the race finishing in Rome on Sunday 27 May.
Stage 14 result:
1. Chris Froome (GB/Team Sky) 5hrs 25mins 31secs
2. Simon Yates (GB/Mitchelton-Scott) +6secs
3. Domenico Pozzovivo (Ita/Bahrain-Merida) +23secs
4. Miguel Angel Lopez (Col/Astana) +25secs
5. Tom Dumoulin (Ned/Team Sunweb) +37secs
6. Thibaut Pinot (Fra/Groupama-FDJ) +42secs
7. Wout Poels (Ned/Team Sky) + 1min 7secs
8. Sebastien Reichenbach (Sui/FDJ) +1min 19secs
9. Pello Bilbao (Spa/Astana) +1min 35secs
10. Michael Woods (Can/EF Education First-Drapac) +1min 43secs
Overall standings after stage 14:
1. Simon Yates (GB/Mitchelton-Scott) 61hrs 19mins 51secs
2. Tom Dumoulin (Ned/Team Sunweb) +1min 24secs
3. Domenico Pozzovivo (Ita/Bahrain-Merida) +1min 37secs
4. Thibaut Pinot (Fra/Groupama-FDJ) +1min 46secs
5. Chris Froome (GB/Team Sky) +3mins 10secs
6. Miguel Angel Lopez (Col/Astana) +3mins 42secs
7. Richard Carapaz (Ecu/Movistar) +3mins 56secs
8. George Bennett (NZ/LottoNL-Jumbo) +4mins 4secs
9. Pello Bilbao (Spa/Astana) +4mins 29secs
10. Patrick Konrad (Aut/Bora-Hansgrohe) +4mins 43secs