Germany’s Marcel Kittel took his second win of the 2018 Tirreno-Adriatico in a sprint finish on stage six in Fano.
The Katusha-Alpecin rider held off Peter Sagan in the final stages, having also beaten Slovakia’s world champion on stage two.
Quick-Step Floors’ Maximiliano Richeze was third after his team’s lead sprinter Fernando Gaviria fell with 8km left in a crash Sagan narrowly avoided.
Team Sky’s Michal Kwiatkowski retained the overall lead with one stage to go.
The Pole takes a three-second lead over BMC’s Damiano Caruso into Tuesday’s final stage – a 10km individual time trial around San Benedetto del Tronto.
All the main contenders avoided the big crash involving Gaviria but Geraint Thomas had to chase back on with the help of Chris Froome, Gianni Moscon and Jonathan Castroviejo following a puncture with 10km to go.
The Briton remains fourth overall, 29 seconds behind team-mate Kwiatkowski and six seconds off Movistar’s Mikel Landa in third, while compatriot Adam Yates is sixth, 36 seconds off the lead.
Sagan was on Gaviria’s wheel but remarkably managed to stay upright when the Colombian clipped the wheel in front of him and fell.
The Slovak had to change his rear wheel and superbly worked himself to the front of the reduced peloton in the final kilometre of the 153km stage from Numana.
But he did not have enough power to overhaul the in-form Kittel in the final 200 metres, having also finished second to Yates on stage five’s summit finish.
Stage six result
- Marcel Kittel (Ger/Katusha-Alpecin) 3hrs 49mins 54secs
- Peter Sagan (Svk/Bora-Hansgrohe) same time
- Maximiliano Richeze (Arg/Quick-Step Floors)
- Sacha Modolo (Ita/EF Education First-Drapac)
- Zdenek Stybar (Cze/Quick-Step Floors)
- Jens Debusschere (Bel/Lotto Soudal)
- Marco Canola (Ita/Nippo-Vini Fantini-Europa Ovini)
- Simone Consonni (Ita/UAE Team Emirates)
- Eduard Grosu (Rom/Nippo Vini Fantini-Europa Ovini)
- Rick Zabel (Ger/Katusha-Alpecin)
- Michal Kwiatkowski (Pol/Team Sky) 25hrs 21mins 22secs
- Damiano Caruso (Ita/BMC) +3secs
- Mikel Landa (Spa/Movistar) +23secs
- Geraint Thomas (GB/Team Sky) +29secs
- Rigoberto Uran (Col/EF Education First-Drapac) +34secs
- Adam Yates (GB/Michelton-Scott) +36secs
- Davide Formolo (Ita/Bora-Hansgrohe) +37secs
- Tiesj Benoot (Bel/Lotto-Soudal) +39secs
- George Bennett (NZ/Lotto NL Jumbo) +41secs
- Jamie Roson (Spa/Movistar) +47secs