Frenchman Julian Alaphilippe claimed an impressive solo victory on stage 10 of the Tour de France as Greg van Avermaet extended his overall lead.
Alaphilippe went clear with just under 30km to go and held his advantage over the final climb to take his first Tour stage win in Le Grand-Bornand.
BMC's Van Avermaet got into the early breakaway and held on to finish fourth, behind Ion Izagirre and Rein Taaramae.
The Belgian now leads Britain's Geraint Thomas by two minutes and 22 seconds.
Four-time winner Chris Froome is up to sixth overall, three minutes and 21 seconds back on Van Avermaet, while fellow Briton Adam Yates is seventh, on the same time.
Team Sky and the other general classification teams know Van Avermaet, who is not a pure climber, should still lose the race lead over the next two days in the Alps but this was a superb ride to keep his yellow jersey into an eighth day.
"We were expecting that from Van Avermaet, he did that last time he had the jersey in 2016," said Thomas, who started the day 43 seconds down.
"It would have been nice to take the yellow jersey but it's the Tour de France - it doesn't come easily and doesn't come just because you want it."
- BeSpoke podcast reviews stage 10: High mountains, high drama, high times
- Van Vleuten defends La Course title in dramatic style
Alaphilippe finishes what he started
Alaphilippe's victory, the first by a Frenchman in this year's Tour, was just reward for animating the race with a fine display of climbing and descending skills.
He attacked just 5.5km into the 158.5km stage from Annecy, helping to establish a breakaway that eventually swelled to 21 riders, before being first man to the summit of the relatively straightforward Col de Bluffy.
Despite slipping back on the more challenging Col de la Croix Fry, the 26-year-old Quick-Step Floors rider surged to the front again to take first place over the hardest-rated climb of the day - the Montee du plateau des Glieres, with a 11.2% average gradient.
By now he was having to forcibly rein himself in and wait for the rest of the remaining break to help him drive on in the valleys, but once back on the slopes, he kicked clear of everyone again, also taking the summit of the Col de Romme solo.
Again he briefly waited for Taaramae, but soon left the Estonian behind, taking a far more attacking line through the corners on the descent before dragging himself up the Col de la Colombiere to ensure he also took the polka dot king of the mountains jersey.
Once over that last climb, the pursuers had no chance of catching Alaphilippe, who began celebrating 3km from the line, with Izagirre rolling in one minute and 34 seconds down.
Van Avermaet honours yellow
It is a rare sight to see the yellow jersey up the road in a breakaway on a mountain stage.
The peloton let Van Avermaet go because the classics specialist, who was second on Sunday's cobble stage, poses no threat to the overall title - indeed post-race he rated his chances of keeping the race lead after Wednesday's stage 11 as "zero".
But given BMC's leader Richie Porte abandoned on Sunday after breaking his collarbone and nominal back-up Tejay van Garderen tumbled down the standings after also crashing on stage nine, this was gutsy ride by Van Avermaet to honour both his team and the leader's jersey in the mountains.
Team Sky made a statement of intent to their rivals, riding a typically high tempo in numbers on the front of the bunch to dissuade attacks.
Most of the favourites matched them but Colombian Rigoberto Uran, who finished second overall last year, was dropped on the final climb and is now nearly four minutes back on Froome.
"For the first big mountain stage I think the guys showed exactly what we have been training for and it was great to see we had the numbers there," said Froome.
A summit finish on stage 11
Wednesday's stage 11 is the second day in the Alps and features four testing climbs, including an uphill finish at La Rosiere.
In his stage-by-stage guide for BBC Sport, Mark Cavendish said: "It's the first mountain-top finish of this year's Tour and it's likely to be a grinding out on the final climb because it's not steep enough to see people absolutely blowing. A group will get whittled down gradually."
Stage 10 result
1. Julian Alaphilippe (Fra/Quick-Step Floors) 4hrs 25mins 27secs
2. Ion Izagirre (Spa/Bahrain-Merida) +1min 34secs
3. Rein Taaramae (Est/Direct Energie) +1min 40secs
4. Greg van Avermaet (Bel/BMC Racing) +1min 44secs
5. Serge Pauwels (Bel/Team Dimension Data) same time
6. Lilian Calmejane (Fra/Direct Energie) +2mins 24secs
7. Dan Martin (Ire/UAE Team Emirates) +3mins 23secs
8. Primoz Roglic (Slo/LottoNL-Jumbo) same time
9. David Gaudu (Fra/Groupama-FDJ)
10. Geraint Thomas (GB/Team Sky)
General classification after stage 10
1. Greg van Avermaet (Bel/BMC Racing) 40hrs 34mins 28secs
2. Geraint Thomas (GB/Team Sky) +2mins 22secs
3. Alejandro Valverde (Spa/Movistar) +3mins 10secs
4. Jakob Fuglsang (Den/Astana) +3mins 12secs
5. Bob Jungels (Lux/Quick-Step Floors) +3mins 20secs
6. Chris Froome (GB/Team Sky) +3mins 21secs
7. Adam Yates (GB/Mitchelton-Scott) same time
8. Mikel Landa (Spa/Movistar)
9. Vincenzo Nibali (Ita/Bahrain-Merida) +3mins 27secs
10. Primoz Roglic (Slo/LottoNL-Jumbo) +3mins 36secs