Denmark's Jonas Vingegaard is one step closer to winning the 2022 Tour de France after he extended his overall lead with a stunning stage 18 victory.
Defending champion Tadej Pogacar finished second, one minute and four seconds behind, after being dropped on the final climb on the Hautacam.
In a brilliant act of sportsmanship earlier in the race, Vingegaard, 25, waited for and shook hands with Pogacar after the Slovenian rider crashed.
He leads overall by three mins 26 secs.
"It's incredible," Vingegaard said. "This morning I said to my girlfriend and my daughter I wanted to win for them and I did. I'm really happy and proud. This one is for my two girls at home."
He added: "I was just happy that it finally ended. It was incredibly hard. Of course I am incredibly happy that I won the stage.
"There are two more days to come until we are in Paris and we must stay focused."
Britain's Geraint Thomas finished fourth - behind Vingegaard's Jumbo Visma team-mate Wout van Aert who helped distance Pogacar inside the final five kilometres - to stay third in the general classification.
Thomas, the 2018 winner, required a bike change on the final ascent but holds a lead of 3:05 over France's David Gaudu, whom he finished four seconds ahead of on Thursday.
The final mountain test of the Tour - a 143km route from Lourdes to Hautacam - included two hors category ascents, with the Col d'Aubisque coming before the final climb to the iconic finish at Hautacam.
Pogacar, 23, launched several attacks on Vingegaard on the Col de Spandelles, which separated the day's two major climbs, but on each occasion the yellow jersey was equal to his efforts.
Incredible act of sportsmanship from Vingegaard
With a deficit of 2:18 before the stage, Pogacar continued to push the pace and he fell after misjudging a corner on the descent - his back tyre sliding on the gravel - just moments after Vingegaard had almost suffered a similar fate.
But his Danish rival slowed to allow Pogacar to re-join him, the two-time champion holding out a hand to thank his opponent before recommencing their race.
Van Aert, assured of the green points jersey, had been at the front of the race for most of the day but sacrificed his own stage opportunity to help Vingegaard on the final ascent.
The Belgian increased the pace, pulling Vingegaard clear of Pogacar and allowing his team-leader to ride the final four kilometres unchallenged.
"There couldn't be a better way to lose the Tour de France than this," Pogacar said.
"I gave it all today. I will leave the race with no regrets. There is still one stage left I might win before Paris, and I will push for it."
He added: "Jumbo Visma has been perfect in this Tour de France. They have been really strong every day. Today the best man won. Jonas [Vingegaard] was stronger than me.
"I gave it all on the second-to-last climb, but I feel I still had something left for an attack on the final climb. Unfortunately, I crashed, and the crash took its toll from me.
"I have nothing but respect to Jonas Vingegaard. I think we respect each other a lot. When he decided to wait for me after my crash, he was in a good position to do it as he had teammates all over the road. It was fine for him to wait. It's me who wanted to go fast on the descent but I pushed it too far and crashed - I can't blame anyone for that."
Stage 19 is a flat 188.3km route from Castelnau-Magnoac to Cahors, with Saturday's 40.7km individual time-trial preceding the traditional processional final stage into Paris on Sunday.
Stage 18 results
1. Jonas Vingegaard (Den/Jumbo-Visma) 3hrs 59mins 50secs
2. Tadej Pogacar (Slo/UAE Team Emirates) +1:04
3. Wout van Aert (Bel/Jumbo-Visma) +2:10
4. Geraint Thomas (GB/Ineos Grenadiers) +2:54
5. David Gaudu (Fra/Groupama-FDJ) +2:58
6. Alexey Lutsenko (Kaz/Astana-Qazaqstan Team) +3:09
7. Daniel Martinez (Col/INEOS Grenadiers) same time
8. Sepp Kuss (US/Jumbo-Visma) +3:27
9. Aleksandr Vlasov (BORA-hansgrohe) +4:04
10. Thibaut Pinot (Fra/Groupama-FDJ) +4:09
General classification after stage 18
1. Jonas Vingegaard (Den/Jumbo-Visma) 71hrs 53mins 34secs
2. Tadej Pogacar (Slo/UAE Team Emirates) +3:26
3. Geraint Thomas (GB/Ineos Grenadiers) +8:00
4. David Gaudu (FRA/Groupama-FDJ) +11:05
5. Nairo Quintana (Col/Team Arkea-Samsic) +13:25
6. Louis Meintjes (RSA/Intermarche-Wanty-Gobert Materiaux) +13:43
7. Aleksandr Vlasov (BORA - hansgrohe) +14:10
8. Romain Bardet (Fra/Team DSM) +16:11
9. Alexey Lutsenko (Kaz/Astana-Qazaqstan Team) +20:09
10. Adam Yates (GB/Ineos Grenadiers) +20:17