Britain's Mark Cavendish won his second stage at this year's Tour of Britain by out-sprinting Italy's Elia Viviani to the finish on Guildford High Street.
The Manxman, riding for Omega Pharma Quick-Step, followed up Wednesday's win in Llanberis by claiming the ninth stage of his career in his home race.
Sir Bradley Wiggins remains the overall leader by 26 seconds after the 155km seventh stage from Epsom to Guildford.
The race concludes on Sunday in a circuit around central London.
A breakaway group of four led for much of Saturday's penultimate stage through Surrey, but they were caught by the peloton with six kilometres remaining.
Cavendish made an early move with lead-out man Alessandro Petacchi ahead of the uphill finish, and had to hold off a surge from Viviani with a second kick for home on the cobbles.
"I just mistimed it a little bit," said Cavendish, who also won the Guildford stage in 2012.
"I was maybe over-confident. I remembered last year kicking out on the cobbles and I thought I'd do the same, but maybe I didn't get it right.
"I saw (Viviani) coming and just moved across to put him on the rough part of the road. The second kick really takes so much out of me, so we'll have to see about tomorrow."
Team Sky's Wiggins finished in the bunch but saw his lead cut by six seconds to 26 ahead of Switzerland's Martin Elmiger of IAM Cycling.
Stage seven result:
1. Mark Cavendish (GB) Omega Pharma Quick-Step 3hrs 46mins 57secs
2. Elia Viviani (Ita) Cannondale Pro Cycling
3. Gerald Ciolek (Ger) MTN-Qhubeka
4. Blaz Jarc (Slo) Team NetApp-Endura
5. Jacob Rathe (USA) Garmin-Sharp
General classification after stage
1. Sir Bradley Wiggins (GB) Sky Pro Cycling 27hrs 57mins 59secs
2. Martin Elmiger (Swi) IAM Cycling at 26secs
3. Simon Yates (GB) Great Britain at 1min 6secs
4, David Lopez (Spa) Sky Pro Cycling at 1min 8secs
5. Sergio Pardilla (Spa) MTN Qhubeka at 1min 16secs