Thomas sailed past lone breakaway rider Mikel Nieve (Mitchelton-Scott) in the final few hundred metres to take victory, having attacked once from an elite group of climbers with around 6km to go, before attacking again having bridged across to Tom Dumoulin (Sunweb), who had gone clear earlier in the day.
Dumoulin was able to claim second place, while Chris Froome was able to seal a spectacular day for Sky after taking third place on the stage.
The other GC contenders were scattered further down the climb having suffered through a punishing day in the Alps, with Dan Martin (UAE Team Emirates) the next best placed in sixth at 27 seconds back, while Romain Bardet (Ag2r La Mondiale), Vincenzo Nibali (Bahrain-Merida) and Nairo Quintana (Movistar) all ceded almost a minute to Thomas at 59 seconds back.
How it happened
The riders set off from Albertville for their second difficult Alpine day of three, with the Tour's second shortest stage ahead of them with just 108.5km to the summit finish in La Rosière.
As expected, there was a huge fight between riders to get away in the day's breakaway, with the group eventually settling at just over 30 riders over the first climb of the day, gaining a maximum gap of six minutes.
Yesterday's stage winner Julian Alaphilippe was among them in his polka-dot jersey, and was able to extend his lead in the KOM competition over the first HC climb despite competition from Rein Taaramäe (Direct Energie), Warren Barguil (Fortuneo-Samsic) and Thomas De Gendt (Lotto-Soudal).
Barguil, as well as targetting the KOM points, looked fairly determined to try for the stage win as well, taking two team-mates with him into the breakaway.
As the breakaway toiled out front and gradually lost riders including Alaphilippe, Team Sky set the rhythm on the front of the peloton, putting a lot of the heavier riders in trouble including race leader Greg Van Avermaet (BMC), who finally lost contact on the climb of the Col du Pré.
That pace also put some general classification hopefuls in trouble, with Rigoberto Uran (EF Education First-Drapac) going out the back, along with Bauke Mollema (Trek-Segafredo) and Rafal Majka (Bora-Hansgrohe) also losing ground.
The fierce pace wasn't helped by an attack from Alejandro Valverde, who had moved off on his own with 54km to go after his Movistar team-mates took control on the front of the bunch.
No-one immediately followed the veteran Spaniard, and he was allowed to gain over two minutes on the peloton and link up with his team-mate Marc Soler who had been in the breakaway.
They looked to be gaining time as they climbed up the penultimate climb of the Cormet de Roseland, remaining over 2-30 from the breakaway out front.
The Spanish pair lost ground to the peloton on the descent towards the final climb though, with Tom Dumoulin then taking the chance to attack with 21km to go and bridge across from the peloton with his Sunweb team-mate Søren Kragh Andersen.
They were able to join up with the Movistar duo on the earlier slopes of the 17.6km road to La Rosière, but Andersen and Soler were quickly dropped, leaving Dumoulin and Valverde together between the various groups on the road.
Up front, the leading breakaway group had whittled down to five with a larger chasing group in pursuit at around 30 seconds. The lead group included Barguil and his team-mate Amaël Moinard, Michael Valgren (Astana), Damiano Caruso (BMC) and Mikel Nieve (Mitchelton-Scott).
They still had well over two minutes into the climb, with Moinard pulling over after doing a huge effort for Barguil, and it soon fell to just three riders with 10km to go as Valgren faded.
That leading group became five again just a kilometre or so later with Cofidis pair Daniel Navarro and Jesus Herrada bridging across, but that didn't last long as Nieve went out on the attack in search of the stage win.
Behind, Dumoulin dropped Valverde who eventually returned to the Sky led group with around 8km remaining, with the Dutchman remaining about 35 seconds ahead and over a minute back on Nieve.
Geraint Thomas then attacked with 6km to go from a now very small clutch of favourites. With no-one able to follow, Froome was able to finesse behind with Quintana, Nibali and Bardet as well as Primož Roglič (LottoNL-Jumbo), occasionally accelerating to test his rivals.
Thomas was able to bridge to Dumoulin and Caruso who were the next up the road, and sat on the pair as they closed the gap towards Nieve to around 25 seconds as he entered the final 2km.
Dan Martin, who had been lagging behind the Froome group, then attacked and took Froome with him and the pair quickly went clear.
With the gaps between the groups on the road beginning to close, Froome attacked Martin in the final kilometre to bridge to Dumoulin, with Thomas then attacking with 700m to go as Nieve struggled towards the line.
Thomas's speed was too much for the Spaniard though, who had been out front all day, and he was left heartbroken as the Sky man rushed past him in the final 200m to take victory on the line.
Froome looked like he was set to to take second place, but narrowly missed out to Dumoulin on the line, while Nieve had to settle for fourth place.
The Quintana/Nibali group rolled in at 59 seconds down, with Roglic at 1-07 and Movistar's other leader Mikel Landa at 1-27.
They'll face another mountain test tomorrow on stage 12, with a 175.5km stage finishing on the iconic climb of Alpe d'Huez.
Tour de France 2018, stage 11: Albertville to La Rosière (108.5km)
1 Geraint Thomas (GBr) Team Sky, in 3-29-36
2 Tom Dumoulin (Ned) Team Sunweb, at 20s
3 Chris Froome (GBr) Team Sky, at same time
4 Damiano Caruso (Ita) BMC Racing Team, at 22s
5 Mikel Nieve (Esp) Mitchelton-Scott, at same time
6 Daniel Martin (Irl) UAE Team Emirates, at 27s
7 Jesus Herrada (Esp) Cofidis, Solutions Credits, at 57s
8 Romain Bardet (Fra) AG2R La Mondiale, at 59s
9 Vincenzo Nibali (Ita) Bahrain-Merida
10 Nairo Quintana (Col) Movistar Team, all at same time
General classification after stage 11
1 Geraint Thomas (GBr) Team Sky, in 44-06-16
2 Chris Froome (GBr) Team Sky, at 1-25
3 Tom Dumoulin (Ned) Team Sunweb, at 1-44
4 Vincenzo Nibali (Ita) Bahrain-Merida, at 2-14
5 Primoz Roglic (Slo) LottoNL-Jumbo, at 2-23
6 Steven Kruijswijk (Ned) LottoNL-Jumbo, at 2-40
7 Mikel Landa (Esp) Movistar Team, at 2-56
8 Romain Bardet (Fra) AG2R La Mondiale, at 2-58
9 Nairo Quintana (Col) Movistar Team, at 3-16
10 Daniel Martin (Irl) UAE Team Emirates, at same time
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1