Team Sky's world champion surged down the closing straight in Brive-la-Gaillarde to win the 222.5km stage ahead of Matt Goss (Orica-GreenEdge) and the green jersey Peter Sagan (Liquigas).
After his second stage win of an otherwise quiet race, Cavendish embraced team-mate Bradley Wiggins, the yellow jersey, who comfortably finished in the pack to preserve his lead in the general classification ahead of Saturday's final time trial to Chartres.
Wiggins leads another Briton, Chris Froome, in the overall standings by two minutes and five seconds in a Tour which has underlined Team Sky's status as the best all-round squad in professional cycling.
Cavendish's victory was his 22nd Tour de France scalp - and Team Sky's fourth win in a race which is now destined to be won by a British rider for the very first time in history.
Led out in textbook fashion by Wiggins and Norwegian national champion Edvald Boasson Hagen, Cavendish launched his sprint early to overtake breakaway riders Luis Leon Sanchez (Rabobank) and Nicolas Roche (Ag2r-La Mondiale) in the closing 100m before powering over the line several bike lengths ahead of Australian Goss.
“I had to go early because the break was still away,” Cavendish explained. “I haven’t done anything this Tour so I had so much energy. I knew I’d get the win. I knew I’d got what it took today.”
Sky team manager Dave Brailsford was ecstatic after a fourth win for his riders – and yet another show of solidarity from the British team.
“I knew Bradley and the guys were very motivated to repay Cav’s loyalty and hard work with a good lead-out,” Brailsford said. “The win was never in doubt and he’s demonstrated once again what a great world champion he is.”
Saturday’s 53.5km time trial is expected to be won by overwhelming favourite Wiggins, while Cavendish’s return to form will put the Manxman down as firm favourite for Sunday’s concluding stage on the Champs Elysees in Paris.
Friday’s stage from the town of Blagnac, near Toulouse, represented the last chance for many teams to get on the win sheet ahead of a final weekend expected to be dominated by Team Sky.
A fast start saw an early breakaway foiled before a second 16-man group formed around 150km from the finish. The break was made up of some high-profile riders, including Alex Vinokourov (Astana), stage 12 winner David Millar (Garmin), Michael Albasini (GreenEdge) and Boasson Hagen.
With many teams not represented, the gap never crept much over the three-minute mark as riders from Euskaltel, Omega Pharma-Quick Step, Saur Sojasun and Rabobank all combined on the front of the peloton to cut the deficit.
The chase was disrupted by a collision around 100km from the finish when a large dog ran into the peloton, bringing down a cluster of riders including Russian Denis Menchov (Katusha) and the Belgian Philippe Gilbert (BMC). An angry Gilbert had to be pulled clear by his manager John Lelangue after remonstrating with the owners of the dog on the side of the road.
By the time the race hit the last of four minor climbs 10km from the finish just three riders from the break were still out ahead, with Vinokourov using all his experience to combine with Luca Paolini (Katusha) and Adam Hansen (Lotto-Belisol).
Ireland’s Roche counter-attacked from the peloton, which was rolling along just 30 seconds in arrears. Roche was joined by Germany’s Andreas Kloden (RadioShack) and Spaniard Sanchez, winner of stage 14.
The six riders came together inside the final 5km as the rain started to fall. A slender 10-second gap was reduced to nothing inside the final kilometre after Team Sky organised the chase.
Cavendish, reduced to a team role in support of Wiggins and Froome for much of this year’s Tour, was going to be the only winner after he leapt off the front, surged past Sanchez and Roche, and roared to victory to complete yet another successful day for Sky.