The French rider escaped on the final 2km climb to the finish at Mur de Bretagne following a 181.5km stage from Rennes.
Ireland's Dan Martin was second at 5sec with Spaniard Alejandro Valverde winning the sprint finish for third place at 10sec.
The Mur de Bretagne had a similar finish to Monday's climb up the Mur de Huy, where Froome was second behind Spaniard Joaquim Rodriguez. The Mur de Bretagne is longer than the Mur de Huy but not as steep - 2km at an average 6.9 percent gradient as opposed to 1.3km at 9.6 percent.
Briton Chris Froome retained the overall leader's yellow jersey. He could have worn it the day before but had refused out of respect for German Tony Martin, who lead the race before falling off his bike close to Le Havre, on Thursday.
They were 185 riders at the beginning of this stage. Italian Luca Paolini was not present when the stage started for he was expelled from the Tour Friday evening due to his testing positive for cocaine - the first doping case during the world's most prestigious cycling race since Frank Schleck tested positive for a diuretic in 2012.