Tejay van Garderen of BMC sat 13 seconds behind Froome at the start of the day, and his team needed to make up the deficit during the hilly 28-kilometre test against the clock to put the American in the coveted yellow jersey.
Intermediate time checks showed that the squads were neck and neck, with BMC one second faster than Sky after 10km, but Sky was one second quicker after 20.5km. However, it was all about accumulated fatigue after eight days of hard racing and the energy-sapping final climb up Côte de Cadoudal, and it was BMC that prevailed to take the stage.
Van Garderen led the pace of BMC's five remaining riders over the line, but Sky looked slightly less organised with the team's fifth man, Nicolas Roche, visibly struggling on the draggy final few hundred metres. No matter, Sky did what they had to do to not only retain the race lead but also not give away any meaningful time to any of Froome's rivals.
Froome now sits 12 seconds ahead of van Garderen overall, with Greg Van Avermaet (BMC) up to third overall at 27 seconds.
Several teams had trouble keeping formation over the testing course, with both Vincenzo Nibali's Astana and Nairo Quintana's Movistar squads breaking their line and losing time as they regrouped.
Movistar and Quintana came out pretty well considering, finishing third behind BMC and Sky at four seconds. Alberto Contador and his Tinkoff-Saxo finished fourth to lose 28 seconds to BMC and 27 seconds to Sky. It was more bad news for defending champion Nibali, as he once again lost time to his rivals. The Italian's Astana squad finished 35 seconds down on BMC and 34 seconds down on Sky.
Contador is now in fifth place overall, 1-03 behind Froome with Quintana in ninth at 1-59. Nibali is still out of the top 10 in 13th place, 2-22 behind the British leader. Only time will tell whether those gaps are meaningful as the race heads south towards the Pyrenees and Alps.
The Orica-GreenEdge team, including British brothers Adam and Simon Yates, rode very conservatively as they only started with six of their original nine riders after losing Simon Gerrans, Daryl Impey and Michael Albasini to injury. The six finished together, ensuring that Michael Matthews - still riding with fractured ribs - made the stage time cut.
The riders will now travel south to Pau, for the first rest day of the 2015 Tour on Monday. Then it's into the mountains with a 15km climb to the finish in La Pierre-Saint-Martin on Tuesday's stage 10.
Tour de France 2015, stage nine: Vannes to Plumelec, 28km
1. BMC Racing Team in 32-15
2. Team Sky at 1 sec
3. Movistar at 4 secs
4. Tinkoff-Saxo at 28 secs
5. Astana at 35 secs
6. IAM Cycling at 38 secs
7. Etixx-QuickStep at 45 secs
8. Lampre-Merida at 48 secs
9. LottoNL-Jumbo at 1-14
10. Ag2r La Mondiale at 1-24
Overall classification after stage nine
1. Chris Froome (GBr) Team Sky in 31-34-12
2. Tejay van Garderen (USA) BMC Racing at 12 secs
3. Greg Van Avermaet (Bel) BMC Racing at 27 secs
4. Peter Sagan (Svk) Tinkoff-Saxo at 38 secs
5. Alberto Contador (Spa) Tinkoff-Saxo at 1-03
6. Rigoberto Uran (Col) Etixx-QuickStep at 1-18
7. Alejandro Valverde (Spa) Movistar at 1-50
8. Geraint Thomas (GBr) Team Sky at 1-52
9. Nairo Quintana (Col) Movistar at 1-59
10. Zdenek Stybar (Cze) Etixx-QuickStep at 1-59
13. Vincenzo Nibali (Ita) Astana at 2-22
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