Canadian climber Michael Woods timed his ride to perfection to claim his first stage win on the Tour de France.
Matteo Jorgenson was more than a minute clear as he began climbing the dormant volcano of Puy de Dome on stage nine.
But the American was caught by Israel Start-Up Nation rider Woods less than 500m from the iconic summit finish.
Tadej Pogacar then attacked defending champion Jonas Vingegaard, making up eight seconds on the overall race leader to close the gap to 17 seconds.
Two-time winner Pogacar finished 13th on the day, a place ahead of Denmark’s Vingegaard, more than eight minutes after the 36-year-old Woods.
British pair Simon Yates and Tom Pidcock were the next riders over the summit, seeing Pidcock climb two places to seventh of the general classification standings while Yates is sixth, moving within five seconds of his twin brother and early race leader Adam, who is fifth.
Jorgenson had gone clear 47km from the finish but was denied a place on the podium altogether as he was passed by Pierre Latour and Matej Mohoric in the last few metres before the line.
Stage nine results
1. Michael Woods (Can/Israel-Premier Tech) 4hrs 19mins 41secs
2. Pierre Latour (Fra/TotalEnergies) +28secs
3. Matej Mohoric (Slo/Bahrain Victorious) +35secs
4. Matteo Jorgenson (US/Movistar) Same time
5. Clement Berthet (Fra/AG2R-Citroen) +55secs
6. Neilson Powless (US/EF Education-EasyPost) +1min 23secs
7. Alexey Lutsenko (Kaz/Astana-Qazaqstan) +1min 39secs
8. Jonas Gregaard (Den/Uno-X) +1min 58secs
9. Mathieu Burgaudeau (Fra/TotalEnergies) +2mins 16secs
10 David de la Cruz (Spa/Astana-Qazaqstan) +2mins 34secs
General classification standings
1. Jonas Vingegaard (Den/Jumbo-Visma) 38hrs 37mins 46secs
2. Tadej Pogacar (Slo/UAE Team Emirates) +17secs
3. Jai Hindley (Aus/Bora-Hansgrohe) +2mins 40secs
4. Carlos Rodriguez Cano (Spa/Ineos Grenadiers) +4mins 22secs
5. Adam Yates (GB/UAE Team Emirates) +4mins 39secs
6. Simon Yates (GB/Team Jayco-AlUla) +4mins 44secs
7. Thomas Pidcock (GB/Ineos Grenadiers) +5mins 26secs
8. David Gaudu (Fra/Groupama-FDJ) +6mins 07secs
9. Sepp Kuss (US/Jumbo-Visma) +6mins 45secs
10. Pello Bilbao (Spa/Bahrain Victorious) +7mins 37secs