Elia Viviani held his nerve and sprinted late to narrowly beat Peter Sagan on stage three of Tirreno-Adriatico.
The Italian national champion (Deceuninck - Quick-Step) was tied to the wheel of the triple world champion, who opened his sprint early on the final corner.
Sagan, who has been recovering from illness, faded towards the line as Viviani fired late and passed him at the line.
Fernando Gaviria (UAE Team Emirates) came from behind and tried to beat Sagan to second but just missed out.
Adam Yates (Mitchelton-Scott) finished safely and holds on to the leader's jersey, his nearest rival Primož Roglič (Jumbo-Visma) sits seven seconds down.
How it happened
After a puncheurs day on stage two, it was the first chance for the sprinters to do battle at the 2019 Tirreno-Adriatico.
But the likes of Viviani and Gaviria would have to fight for their chance at the gallop, as stage three followed an undulating 224km from Pomarance to Foligno.
With most of the climbing out of the way 121km into the stage, there were only a few smaller ramps to navigate before the flat run to the line.
The finish was a technical test, with two sharp turns being followed by a long, sweeping 180-degree corner to the line.
Warm and still conditions make it a calm day of racing through the central Italian countryside.
A six-rider breakaway was allowed to go clear at the outside, consisting of Mirco Maestri (Bardiani-CSF), Alessandro Tonelli (Bardiani-CSF), Natnael Berhane (Cofidis, Solutions Crédits), Alexander Cataford (Israel Cycling Academy), Sebastian Schönberger (Neri Sottoli-Selle Italia-KTM) and Stepan Kurianov (Gazprom-RusVelo).
The escapees opened their advantage to four and a half minutes early on, extending to seven minutes at its maximum.
Two riders slipped back from the front of the race as the stage wore on, leaving Berhane, Cataford, Tonelli and Schönberger to push for the line.
But the peloton were sure to keep an eye on the gap, slowly closing the break to the four-minute mark with 85km left to race.
The peloton settled into the chase, closing down the gap to 2-07 with 30km to race.
Mitchelton-Scott kept their train at the front of affairs heading into the final 20km to protect race leader Adam Yates.
Deceuninck - Quick-Step were the main chasers for Viviana, with Dimension Data also riding at the front of affairs as they tried to counter recent bad luck.
Their sprinter Giacamo Nizzolo was involved in a crash earlier in the day, but it was unclear if he or Reinardt Janse Van Rensburg would be their pick for the sprint.
The remains of the break held a slim 24-second advantage at the 10km marker.
With 7km to the line the breakaway started fall apart as Schönberger attacked his companions to make a solo bid.
Cataford closed down the move and the four at the front stayed together, but the Austrian kicked once more as the peloton caught up.
Schönberger was finally absorbed at the 4km mark with Team Sky hitting the front to protect their GC hope Wout Poels in the nervous finish.
Janse Van Rensburg made his presence felt at the head of the race, showing Dimension Data's intentions to back Nizzolo, with Peter Sagan holding his place in the front four positions into the final 2km.
Viviani sat firmly on Gaviria's wheel and followed the Columbian as he weaved his way into position at the front of the race.
Viviani's lead-out rider Max Richeze hit the front with Sagan locked firmly to his wheel, with the Slovakian hitting the front and opening his sprint first in the final corner.
But Viviani waited on Sagan's wheel and sped past as the former world champion faded.
Gaviria threatened to take second place from Sagan at the bike throw, but had to settle for third.
Tirreno-Adriatico stage three: Pomarance to Foligno (224km)
1. Elia Viviani (Ita) Deceuninck - Quick-Step, in 5-26-45
2. Peter Sagan (Svk) Bora-Hansgrohe
3. Fernando Gaviria (Col) UAE Team Emirates
4. Giacomo Nizzolo (Ita) Dimension Data
5. Jens Keukeleire (Bel) Lotto-Soudal
6. Davide Cimolai (Ita) Israel Cycling Academy
7. Clement Venturini (Fra) Ag2r La Mondiale
8. Jasper Stuyven (Bel) Trek-Segafedo
9. Davide Ballerini (Ita) Astana
10. Luca Pacioni (Ita) Neri Sottoli-Selle Italia-KTM, all at same time
General classification after stage three
1. Adam Yates (GBr) Mitchelton-Scott, in 10-37-19
2. Brent Bookwalter (USA) Mitchelton-Scott, at same time
3. Primož Roglič (Slo) Jumbo-Visma, at 7s
4. Laurens De Plus (Bel) Jumbo-Visma, at same time
5. Tom Dumoulin (Ned) Sunweb, at 22 s
6. Sam Oomen (Ned) Sunweb
7. Søren Kragh Andersen (Den) Sunweb, all at same time
8. Julian Alaphilippe (Fra) Deceuninck-Quick-Step, at 27s
9. Wout Poels (Ned) Team Sky, at 47s
10. Jonathan Castroviejo (Esp) Team Sky, at same time
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1