Mark Cavendish sprinted to his first win of the season on stage five of the Volta ao Algarve as team-mate Michal Kwiatkowski completed overall victory.
Cavendish (Omega Pharma - Quick-Step) beat France's Arnaud Demare (FDJ) to the line in Vilamoura by less than a bike length, with Bryan Coquard (Europcar) following closely behind in third.
Kwiatkowski extended his lead at the top of the general classification by taking three bonus seconds at an intermediate sprint, and then finished safely in the peloton to seal the first stage-race triumph of his career.
Alberto Contador (Tinkoff-Saxo) was second overall, 19 seconds down, with world champion Rui Costa (Lampre-Merida) 32 seconds back in third.
Cavendish's victory was his first since winning the final stage of the Tour of Britain last September.
"I'm very happy," he said afterwards. "We came here to win the yellow jersey, and to win the stage would be a bonus. We controlled the race and everybody rode incredibly well. Super strong leadout, everybody did their part."
Kwiatkowski added: "It is my first stage race victory, so I'm really happy. I have been aiming for the general classification in the stage races, so to start my season like this is a good sign."
Stage five result
1 Mark Cavendish (GB) Omega Pharma - Quick-Step, 3:24:10
2 Arnaud Demare (Fra) FDJ, same time
3 Bryan Coquard (Fra) Europcar, st
4 Jose Joaquin Rojas (Spa) Movistar, st
5 Sacha Modolo (Ita) Lampre-Merida, st
6 Alexey Tsatevich (Rus) Katusha, st
7 Danilo Napolitano (Ita) Wanty-Groupe Gobert, st
8 Igor Boev (Rus) RusVelo, st
9 Tom Leezer (Ned) Belkin, st
10 Yoann Offredo (Fra) FDJ, st
Final general classification
1 Michal Kwiatkowski (Pol) Omega Pharma - Quick-Step, 16:29:57
2 Alberto Contador (Spa) Tinkoff-Saxo, +19secs
3 Rui Costa (Por) Lampre-Merida, +32
4 Alexandre Geniez (Fra) FDJ, +1:13
5 Wilco Kelderman (Ned) Belkin, +1:32
6 Ruben Fernandez (Spa) Caja Rural-Seguros RGA, +1:33
7 Eduard Prades (Spa) OFM-Quinta da Lixa, +1:35
8 Chris Horner (USA) Lampre-Merida, same time
9 Simon Spilak (Slo) Katusha, +1:41
10 Edgar Pinto (Por) LA Aluminios-Antarte, +1:42