Britain's Chris Froome won the stage 18 time trial to edge closer to securing his third Tour de France title.
Team Sky's Froome finished 21 seconds ahead of Dutchman Tom Dumoulin to win the hilly 17km stage in 30 minutes and 43 seconds, with Fabio Aru third.
Froome, the 2013 and 2015 Tour winner, now leads the 2016 edition by three minutes and 52 seconds.
Bauke Mollema of the Netherlands and Briton Adam Yates remained second and third overall respectively.
The stage started in Sallanches and featured an 11km section where the race ascended almost 700m from 566m to 1,279m before a technical descent into the finish in Megeve.
With the riders going out in reverse order, Dumoulin, who won the time trial on stage 13, again set the pace, some two hours before Froome set off.
His time of 31 minutes and four seconds bettered that of Thomas de Gendt by 41 seconds and the Team Giant-Alpecin rider then sat in the winner's chair, watching the race unfold on television.
Paced to perfection
Froome was 23 seconds behind Dumoulin at the first time-check, after 6.5km, but had narrowed that to 10 seconds by 10km.
The next check came at 13.5km and Froome had moved 13 seconds clear and picked up another few seconds on the descent into the finish.
"I really didn't expect to beat Tom, pacing was key," said Froome, who is trying to become the first man to win successive Tour titles since Spain's Miguel Indurain won five on the trot from 1991.
"I started off steady and really controlled that first part then gave it everything I had."
His victory means British riders have won seven stages of this year's race - Mark Cavendish with four, Froome with two and Steve Cummings - to equal the record set in 2012, when Sir Bradley Wiggins became the first British rider to win the race.
The battle for second
Mollema started the stage two minutes, 27 seconds behind Froome but finished 85 seconds adrift and is now almost four minutes back.
Yates briefly looked like he was going to significantly close the 26-second gap he started the stage behind Mollema when he erased 25 seconds in the opening 6.5km.
But the 23-year-old conceded his "legs fell off" after the climb, although he did gain two seconds of time in the end on Mollema and also did enough to retain third place overall.
"I've got two more days to fight and will do so for every second," said the Orica BikeExchange rider, who is wearing the white jersey as the best rider under the age of 25. "It's going to be a big fight for the podium."
Nairo Quintana was among the favourites to challenge Froome for the overall title but the Colombian has struggled in the mountains and lost a further 70 seconds on the time trial.
However, the Movistar rider did pick up 13 seconds on Yates and is now just 21 seconds adrift of third.
Just 68 seconds separate Mollema in second from Richie Porte in sixth with two mountain stages in the Alps to come before Sunday's largely processional ride into Paris.
Two more days in the Alps
Before then the riders must negotiate two mountainous Alpine stages, each featuring four climbs. The first, Friday's stage 19, features a summit finish at Saint-Gervais Mont Blanc, which Team Sky rider Geraint Thomas picked out as "a dangerous stage" in his BBC Sport stage-by-stage guide well before the weather forecast suggested there would be thunderstorms in the area.
Saturday's 20th and penultimate stage finishes with a descent to the ski resort of Morzine before the race transfers north overnight to Chantilly for the start of stage 21, which climaxes on the Champs-Elysees.
Stage 18 result:
1. Chris Froome (GB/Team Sky) 30mins 43secs
2. Tom Dumoulin (Ned/Giant) +21secs
3. Fabio Aru (Ita/Astana) +33secs
4. Richie Porte (Aus/BMC Racing) Same time
5. Romain Bardet (Fra/AG2R) +42secs
6. Thomas De Gendt (Bel/Lotto) +1min 02secs
7. Jon Izagirre (Spa/Movistar) +1min 03secs
8. Joaquim Rodriguez (Spa/Katusha) +1min 05secs
9. Louis Meintjes (SA/Lampre) +1min 08secs
10. Nairo Quintana (Col/Movistar) +1min 10secs
General classification after stage 18:
1. Chris Froome (GB/Team Sky) 77hrs 55mins 53secs
2. Bauke Mollema (Ned/Trek) +3mins 52secs
3. Adam Yates (GB/Orica) +4mins 16secs
4. Nairo Quintana (Col/Movistar) +4mins 37secs
5. Romain Bardet (Fra/AG2R) +4mins 57secs
6. Richie Porte (Aus/BMC Racing) +5mins 00secs
7. Fabio Aru (Ita/Astana) +6mins 08secs
8. Alejandro Valverde (Spa/Movistar) +6mins 37secs
9. Louis Meintjes (SA/Lampre) +7mins 15secs
10. Daniel Martin (Ire/Etixx - Quick-Step) +7mins 18secs