He attacked a depleted group led by yellow jersey Chris Froome (Sky) with less than a kilometre left in the stage to finish ahead of Dan Martin (Cannondale-Garmin) and Movistar’s Alejandro Valverde.
The general classification remained largely unchanged, with Froome continuing to lead Peter Sagan (Tinkoff-Saxo) and Tejay van Garderen (BMC).
After finishing fourth on the stage Sagan became the new points classification leader, pulling on the green jersey ahead of Andre Greipel (Lotto-Soudal) and Mark Cavendish (Etixx-QuickStep).
The 181.5km stage from Rennes to the legendary côte de Mûr-de-Bretagne started with 185 riders and perfect weather conditions.
The attacks came from the moment the flag dropped but it took six kilometres before a selection stuck.
Bartosz Huzarski (Bora-Argon 18), Sylvain Chavanel (IAM Cycling), Romain Sicard (Europcar) and Pierre-Luc Périchon (Bretagne-Séché Environnement) made the break of the day, soaking up all the major bonuses on the only categorised climb and intermediate sprint.
At the intermediate sprint Greipel (Lotto-Soudal) padded out his then points classification lead over Sagan and John Degenkolb (Giant-Alpecin) with a bunch sprint win at Gare de Montcontour.
A shake-up at the front of the race saw Chavanel, Sicard and Périchon fall back after the sprint while Huzarski was joined by Michal Golas (Etixx-QuickStep) and Lars Bak (Lotto-Soudal).
Golas and Bak fell to the chase with 8km to go as the BMC led peloton lined up for an all out assault on the côte de Mûr-de-Bretagne.
The final two kilometres chopped and changed as riders decided how deeply they would commit to the average 6.9 per cent gradient. Surprisingly, defending Tour de France champion Vincenzo Nibali (Astana) was gapped by his rivals on the punchy climb.
Froome appeared to cover any moves he thought dangerous and was particularly watchful of the man in second place overall, Sagan.
Vuillermoz’s attack came at 800 metres from the finish and was never headed as he went on to record the first stage victory by a French rider in this year’s Tour.
"The whole AG2R-La Mondiale team made a big effort to get Jean-Christophe, Romain and I in a good position at the beginning of the climb," said Vuillermoz after the stage. "I thought of attacking in the harder part of the Mûr, I knew the end would be flat.
"When Froome came back I followed him in order to rest. I attacked again but I did not think I would be the winner."
The small rest worked and Vuillermoz went to on win the stage 10 seconds ahead of the yellow jersey and five seconds ahead of Martin who finished second.
"It is just incredible, I did not think it could be possible," said Vuillermoz. "I just wanted to do my best today.
"I thought there would be better riders than me today. I wanted to suprise everyone and finally it happened. It was all or nothing for me today."
@ag2rlamondiale_procyclingteam And the winner us...: Alexiiiiis Vuillermoz #alexisvuillermoz #champion #tdf15 #ALLEZALM #TDWSport photo @tdwsport
While speaking with media after his win, Vuillermoz turned the tables and asked childhood idol, Robbie McEwen, for a photo after he interviewed the stage winner for SBS.
@ag2rlamondiale_procyclingteam #alexisvuillermoz avec @robbiemcewen son idole de jeunesse #ALLEZALM #tdf15