Chris Froome held on to the yellow jersey after stage eight of the Tour de France from Rennes to Mur de Bretagne.
Team Sky’s Froome, 30, finished eighth as Alexis Vuillermoz became the first French stage winner of this year’s race on a steep climb to the finish.
Ireland’s Dan Martin was second with Spain’s Alejandro Valverde third.
Defending champion Vincenzo Nibali lost 10 seconds to Froome on the final 2km climb but Nairo Quintana and Alberto Contador finished alongside the Briton.
“That was a tough climb, but my team-mates did a great job in bringing me to the front, I was in the best position,” said Froome after retaining his 11-second lead over Slovakia’s Peter Sagan, who finished fourth.
“I was quite surprised to hear that I gained some time on Vincenzo Nibali.”
Froome was again expertly looked after by Geraint Thomas as the peloton upped the pace in the run-in to the bottom of the final ascent.
The narrowing roads meant space was at a premium and each of the leading teams was keen to keep their riders towards the front of the bunch to put them in the best position to attack and avoid crashes.
Thomas had Froome tucked in behind him as they started the climb which featured gradients of 15% in the opening kilometre.
As Thomas dropped away, Froome found himself briefly at the head of the race but AG2R rider Vuillermoz attacked about one kilometre from the finish and stayed clear to win by five seconds.
Cannondale-Garmin rider Martin banged his hands on his handlebars in frustration after finishing second and later said he was “stuck on the barrier and couldn’t get out”.
Because Vuillermoz was of no threat in the overall standings, Froome was happy to let him ride clear and concentrate on Contador, Quintana and Nibali – his main rivals for the overall Tour victory.
Contador and Quintana were unable to claw back any of the time they lost earlier in the race to Froome so remain 36 seconds and one minute, 56 seconds adrift respectively.
Nibali was the day’s big loser though, surprisingly shipping 10 seconds to fall one minute, 48 seconds behind Froome.
Sagan’s fourth place earned him enough points to take the green jersey from Germany’s Andre Greipel. The Slovakian leads on 213 points with Greipel on 210 and Britain’s Mark Cavendish third on 159.
Britain’s Adam Yates, who finished seventh, “tried following Vuillermoz” but “had nothing left”. However, the Orica GreenEdge climbing specialist said he is waiting “to see what he can do” when the race reaches the Pyrenees mountains on Tuesday.
Before that, there is Sunday’s 28km team time trial from Vannes to Plumelec which could further shake up the standings because the time credited to each rider is taken when the fifth in each team crosses the finish line.
“You need five riders to get up that final climb together,” said Froome. “That’s going to make it quite tough for a lot of teams. I do expect there to be quite substantial time differences.”
American Tejay van Garderen, who is third overall, 13 seconds behind Froome, could take the race lead as his BMC Racing squad is strong against the clock.
There will be live text and radio commentary of the team time trial on the BBC Sport website from 14:00 BST.
Stage eight result:
1. Alexis Vuillermoz (Fra) AG2R 4hrs 20mins 55secs
2. Daniel Martin (Ire) Cannondale +5secs
3. Alejandro Valverde (Spa) Movistar +10secs
4. Peter Sagan (Svk) Tinkoff – Saxo Same time
5. Tony Gallopin (Fra) Lotto
6. Greg Van Avermaet (Bel) BMC Racing
7. Adam Yates (GB) Orica
8. Chris Froome (GB) Team Sky
9. Bauke Mollema (Ned) Trek
10. Tejay van Garderen (US) BMC Racing
14. Alberto Contador (Spa) Tinkoff – Saxo Same time
17. Nairo Quintana (Col) Movistar
30. Vincenzo Nibali (Ita) Astana +20secs
1. Chris Froome (GB) Team Sky 31hrs 01mins 56secs
2. Peter Sagan (Svk) Tinkoff – Saxo +11secs
3. Tejay van Garderen (US) BMC Racing +13secs
4. Tony Gallopin (Fra) Lotto +26secs
5. Greg Van Avermaet (Bel) BMC Racing +28secs
6. Rigoberto Uran (Col) Etixx – Quick-Step +34secs
7. Alberto Contador (Spa) Tinkoff – Saxo +36secs
8. Warren Barguil (Fra) Giant +1min 07secs
9. Zdenek Stybar (Cze) Etixx – Quick-Step +1min 15secs
10. Bauke Mollema (Ned) Trek +1min 32secs
13. Vincenzo Nibali (Ita) Astana +1min 48secs
15. Geraint Thomas (GB) Team Sky +1min 52secs
16. Nairo Quintana (Col) Movistar +1min 56secs