He out-kicked Tour nemesis Andre Greipel (Lotto-Soudal) and Peter Sagan (Tinkoff-Saxo) in a sprint finish in Fougères to notch up his 26th career Tour de France stage victory.
Chris Froome (Sky) officially secured the yellow jersey at the end of the stage after previous race leader Tony Martin was unable to start owing to the broken collarbone he sustained at the end of Stage 6.
Froome, The 2013 Tour champion, leads Sagan by 11 seconds on the general classification with Tejay van Garderen (BMC) third at 13 seconds.
The break of the day went early with mountains classification leader Daniel Teklehaimanot (MTN-Qhubeka) leading the charge along with Kristjian Durasek (Lampre-Merida), Luis Angel Maté (Cofidis) plus Anthony Delaplace and Brice Feillu of Bretagne-Séché Environnement.
The only categorised climb of the day came at kilometre 13, which Teklehaimanot dominated to cement his status in the polks dot jersey for another day.
From a high of 3min 50sec the time gap to the peloton began to fall slowly as the only intermediate sprint of the day approached.
After the front five took the major bonuses, the focus shifted to the bunch sprint, which was won by John Degenkolb (Giant-Alpecin) ahead of Sagan and points classification leader Greipel, narrowing that competition further.
From that point it was a slow procession to the finish by a measured peloton, probably desperate for an uneventful day of racing.
The catch came with approximately 10 kilometres left to the finish and from that point, it was a fast run in to the line with the sprint trains leading the way.
Giant-Alpecin, FDJ and Katusha moved to the front of the bunch for their sprinters John Degenkolb, Arnaud Démare and Alexander Kristoff, but they were no match for Cavendish, Greipel and Sagan.
Cavendish found his way back to Tour glory while Froome moved back into the overall lead. The win breaks a drout for the Manx Missile who has started his sprint too early in previous stages of this year's Tour, and hasn't won a stage of the event since 2013.
"I've just been a bit over anxious the last two times and today was about not being impatient. I almost left it too long this time, I waited so long," said Cavendish.
"I had the same power in my legs as I had the other days that ended in sprints. It's just, if you wait and launch later, you're going to go with more immediate power than you would with 250 or 300 metres to go like I did the other times.
"So, after being a little more patient, I'm super happy with my victory today, which is the 26th of my career. Every one of the 26 wins is special. At Le Tour de France even one victory makes a rider's whole career."