Cavendish won the 155.8km ride from Epsom to Guildford in a time of 3 hours 46.57 seconds to register his second stage victory of the race.
The Omega Pharma-Quick Step rider sprinted from deep, holding off a late challenge from Italian rider Ella Viviani, who finished second, and Germany's Gerald Ciolek in third.
Cavendish admitted to mistiming his attack due to over-confidence. "We planned to kick with 700 meters to go but I am just lucky that I have that second kick," he told reporters.
"The guys did a brilliant job and I am so happy."
Team Sky's Wiggins crossed the line with the rest of the peleton and leads the general classification by 26 seconds from Team IAM Cycling's Martin Elmiger.
Britain academy rider Simon Yates is third heading into Sunday's final stage in central London.
The 33-year-old Wiggins, last year's Tour de France champion, is aiming to become the second Briton in a row to win the race after Jonathan Tiernan-Locke won it in 2012.
Mark Cavendish (GBr) Omega Pharma-Quick Step 3:46:57
Elia Viviani (Ita) Cannondale Pro Cycling
Gerald Ciolek (Ger) MTN-Qhubeka
Blaz Jarc (Slo) Team NetApp-Endura
Jacob Rathe (USA) Garmin-Sharp
Matteo Pelucchi (Ita) IAM Cycling
Chris Opie (GBr) Team UK Youth
Martin Elmiger (Swi) IAM Cycling
Alessandro Bazzana (Ita) UnitedHealthcare Pro Cycling Team
Sam Bennett (Irl) An Post-Chainreaction
Sir Bradley Wiggins, GBR, Sky Pro Cycling, 27:57:59
Martin Elmiger, SUI, IAM Cycling, + 0.26
Simon Yates, GBR, Great Britain, + 1.06
David Lopez, ESP, Sky Pro Cycling, + 1.08
Sergio Pardilla, ESP, MTN Qhubeka, + 1.16