Britain's Chris Froome remained on course for a third Tour de France victory by extending his lead to two minutes and 27 seconds on stage 17.
Russia's Ilnur Zakarin won the stage with a breakaway on the steep ascent to the finish at Finhaut-Emosson, before Froome powered away from his rivals.
Adam Yates, who is third overall, was the only yellow-jersey contender close to keeping up with his fellow Briton.
Bauke Mollema and Nairo Quintana lost considerable time on the race leader.
Katusha rider Zakarin, 26, was 55 seconds clear of Colombian Jarlinson Pantano at the finish, with Poland's Rafal Majka tightening his grip on the polka dot jersey - for the best climber - by coming third.
Switzerland's Fabian Cancellara pulled out of the race after the stage so he can rest before next month's Rio Olympics.
"It was a hard Tour for me: a lot of stress and I feel tired," said the Trek-Segafredo rider, 35. "If I want to be good at the Olympics I need rest."
Froome demoralises rivals
Movistar's Quintana, 26, had been billed as Team Sky rider Froome's biggest threat this year, having finished runner-up to the 31-year-old in 2013 and 2015.
But the Colombian, a notable climber, did not have the strength to keep up with Froome, who followed BMC rider Richie Porte in the final 2km of one of the steepest finishes in this year's event.
Trek-Segafredo rider Mollema, second overall, had already been dropped by that point and the Dutchman conceded a damaging 40 seconds to Froome, with Quintana losing 28 seconds.
The result, on a 184km stage that started in Berne and, for the first time, remained entirely in Switzerland, could prove to be the knockout blow from Froome.
He now has to survive just three more stages through the Alps before the mainly processional final run-in to Paris on Sunday.
"Quintana tried one time to attack but maybe he didn't have the legs like last year," said Froome. "It was tough but I'm happy to follow the best - Richie Porte was very strong on the final climb."
Yates grows in stature
The only rival who looked capable of coming close to matching Froome, who finished the stage 11th, was fellow Briton Yates.
The sight of the 23-year-old from Bury, the leading young rider on the Tour, pulling away from the highly rated Quintana was one few expected to see before the event.
This is only Yates' third appearance in a Grand Tour race - after finishing 50th in last year's Tour de France and 82nd in the 2014 Vuelta a Espana - and he was just six seconds behind Froome on the stage, closing the gap to third-placed Mollema to 26 seconds overall.
Yates will be part of Great Britain's road race team at the Rio Olympics next month, where he will support Froome's pursuit of a medal.
Zakarin drags himself home
Stage winner Zakarin may not be able to represent his country in Rio, with the possibility of Russia being banned after a report accused the nation of state-sponsored doping.
The 26-year-old, who served a two-year drugs ban in 2009, timed an escape from Pantano to perfection on the final ascent.
He looked jaded as he approached the finish line and was barely able to zip up his jersey to increase the exposure of the team sponsor, but put in a determined climb for his first Tour stage win.
"Thank you to my team-mates," he said. "They've been super. This result is not a surprise for me. In the first week, I also tried to go for it."
Stage 17 result
1. Ilnur Zakarin (Rus/Katusha) 4hrs 36mins 33secs
2. Jarlinson Pantano (Col/IAM Cycling) +55secs
3. Rafal Majka (Pol/Tinkoff) +1min 26secs
4. Kristijan Durasek (Cro/Lampre) +1min 32secs
5. Brice Feillu (Fra/Fortuneo) +2mins 33secs
6. Thomas Voeckler (Fra/ Direct Energie) +2mins 46secs
7. Domenico Pozzovivo (Ita/AG2R) +2mins 50secs
8. Stef Clement (Ned/IAM Cycling) +2mins 57secs
9. Steve Morabito (Swi/FDJ) +4mins 38secs
10. Richie Porte (Aus/BMC Racing) +7mins 59secs
General classification after stage 17
1. Chris Froome (GB/ Team Sky) 77hrs 25mins 10secs
2. Bauke Mollema (Ned/Trek) +2mins 27secs
3. Adam Yates (GB/Orica) +2mins 53secs
4. Nairo Quintana (Col/Movistar) +3mins 27secs
5. Romain Bardet (Fra/AG2R) +4mins 15secs
6. Richie Porte (Aus/BMC Racing) +4mins 27secs
7. Alejandro Valverde (Spa/Movistar) +5mins 19secs
8. Fabio Aru (Ita/Astana) +5mins 35secs
9. Daniel Martin (Ire/Etixx - Quick-Step) +5mins 50secs
10. Louis Meintjes (SA/Lampre) +6mins 7secs