Tutti hanno provato a metter in difficoltà Jonathan Milan, ma nella tappa più facile del Giro d'Italia la maglia ciclamino non si è fatto ingannare conquistando la 13a frazione della Corsa Rosa. Sul traguardo di Cento il friulano della Lidl-Trek ha dato sfogo a tutta la propria rabbia precedendo il polacco Stanisław Aniolkowski (Cofidis) e Phil Bauhaus (Bahrein-Victorius).
Inizio di tappa con la tradizionale fuga portata avanti da Andrea Pietrobon (Team Polti-Kometa), Manuele Tarozzi e Alessandro Tonelli (VF Group – Bardiani CSF – Faizanè) che hanno subito guadagnato circa tre minuti. Con il passare dei chilometri il gruppo ha dato vita all'inseguimento che si è acceso a circa sessanta chilometri dal traguardo quando l'Ineos Grenadiers ha accelerato sfruttando la situazione causata dal vento e aprendo così una serie di ventagli.
Mentre i battistrada venivano ripresi, dietro rimanevano il favorito della vigilia Jonathan Milan (Bahrein-Victorius) e il bolognese Lorenzo Fortunato (Astana Qazaqstan Team) che hanno dovuto sforzarsi per chiudere il buco. Un inseguimento durato diversi chilometri, ma che si è conclusa favorevolmente dando così la possibilità di giocarsi tutto allo sprint.
Nel finale Dries De Pooter (Intermarché-Wanty) e Martin Marcellusi (VF Group – Bardiani CSF – Faizanè) hanno provato ad anticipare invano i velocisti, tuttavia la sfida si è decisa ancora allo sprint con Fernando Gaviria (Movistar Team) che ha cercato di cogliere di sorpresa Milan che ha però sfruttato il lavoro di Simone Consonni e ha realizzato il tris.
In chiave classifica generale Tadej Pogacar (UAE Team Emirates) che ha mantenuto la maglia rosa con 2'40" su Daniel Martinez (Bora-Hansgrohe) e 2'56" su Geraint Thomas (Ineos-Grenadiers).