Italian Fabio Aru claimed the overall leader’s yellow jersey as previous leader Froome could not sustain the pace in the final few hundred metres up a steep climb to the finish line.
Astana rider Aru attacked in the final part of the climb to Peyragudes, a 2.4 kilometre ascent at a punishing average gradient of 8.4 per cent but Bardet had more left in the tank and powered away in the last 200 metres to beat Colombian Rigoberto Uran by two seconds.
Aru, who won the Vuelta in 2015, came third, also two seconds behind Bardet while Froome cracked and ended up 22 seconds adrift of the Frenchman.
Overall, Aru leads Froome by six seconds and Bardet by 25.
“It’s a great joy. I had good legs but I was patient,” said AG2R-La Mondiale rider Bardet.
“The team has never been so strong, we are a real factor in the race. Now we have to do our best in the final part.”
Froome and Aru went off the road briefly in the descent from the Port de Bales, the penultimate climb of the day, but the group of overall contenders waited on them.
They caught the last survivor of the day’s breakaway, Briton Stephen Cummings, 8.5 kilomteres from the finish, in the final slopes of the Col de Peyresourde.
Nairo Quintana had already been dropped, as the Colombian struggles to recover from an energy-sapping Giro d’Italia.
He and two-time champion Contador, who was dropped in the finale, saw their hopes of winning the race all but vanish.
For the second time after Aru prevailed at the top of La Planche des Belles Filles last week, Froome was beaten in a summit finish.
“I didn’t have the legs. It’s a nice victory for Romain Bardet, and hats off to Fabio Aru for taking the yellow jersey,” Froome said.
“I did my best but I didn’t have the legs to follow.”
Tonight’s 13th stage is a relatively short 101 kilometre trek through the Pyrenees that should see the overall favourites attack.
“Let’s be wary of Team Sky. They don’t like to lose and they will be out for revenge,” said Bardet, who is looking to become the first Frenchman to win the Tour since Bernard Hinault in 1985.
Make your contribution to independent news
A donation of any size to InDaily goes directly to helping our journalists uncover the facts. South Australia needs more than one voice to guide it forward, and we’d truly appreciate your contribution. Please click below to donate to InDaily.