L'arrivée de la 13e étape après 180 kilomètres à Vicence était conçue pour les puncheurs. Le dernier kilomètre vers le sanctuaire de Monte Berico présentait une pente moyenne de 7,1 pour cent, la rampe finale atteignant des pourcentages de dix à douze.
Grâce à un sprint puissant dans les 200 derniers mètres, Mads Pedersen (Lidl - Trek) a finalement remporté la victoire du jour en montée avec une demi-longueur de roue d'avance sur Wout Van Aert (Team Visma | Lease a Bike). La troisième place est revenue à Isaac del Toro (UAE Team Emirates - XRG) avec deux secondes de retard. Primoz Roglic (Red Bull - BORA - hansgrohe) a terminé sixième (+0:05).
Dans le final, Romain Bardet (Team PicnicPostNL) et Mathias Vacek (Lidl - Trek) ont attaqué, ce qui a évité aux coéquipiers de Pedersen d'avoir à accélérer dans les derniers kilomètres. A 600 mètres de l'arrivée, le peloton - mené par UAE Team Emirates - XRG - a repris les deux échappés. Pedersen a ensuite été le premier coureur à lancer le sprint et a conservé son avance de justesse jusqu'à la ligne d'arrivée.
Avec sa troisième place au classement du jour, Isaac del Toro s'est assuré quatre secondes de bonification pour le classement général. Dans le kilomètre Red Bull, à dix kilomètres de l'arrivée, del Toro a également terminé troisième au sprint derrière son coéquipier Juan Ayuso, gagnant ainsi deux secondes de bonification supplémentaires. Au classement général, il a légèrement augmenté son avance à 38 secondes sur Ayuso.
Après le départ de Rovigo, il a fallu plusieurs kilomètres et tentatives avant que le groupe du jour ne se forme. Ce n'est qu'avec une poussée de Sven Erik Bystrøm (Groupama - FDJ) que l'écart décisif s'est creusé. Le Norvégien a été rejoint peu après par Luca Mozzato (Arkéa - B&B Hotels), Fran Miholjević (Bahrain - Victorious), Dries De Bondt (Decathlon AG2R La Mondiale Team), Lorenzo Germani (Groupama - FDJ), Lorenzo Milesi (Movistar), Chris Hamilton (Team PicnicPostNL), Mattia Bais (Team PoltiVisitMalta) et Filippo Magli (VF Group - Bardiani CSF - Faizanè).
Le peloton n'a cependant pas voulu laisser beaucoup d'avance au groupe de neuf coureurs. Le rythme de l'étape est donc resté élevé. Dans le peloton, ce sont surtout Team Visma | Lease a Bike, Q36.5 Pro Cycling Team et Lidl - Trek qui ont dicté la poursuite, si bien que l'écart avec le groupe de tête n'a jamais dépassé les deux minutes. Les deux premières heures de course se sont déroulées à une vitesse de 49 km/h. Le peloton s'est ensuite déplacé vers le sud.
A partir de 60 kilomètres de l'arrivée, le terrain est devenu plus ondulé, y compris trois cols. Dans la montée San Giovanni in Monte (4ème catégorie), INEOS Grenadiers a attaqué en tête et a provoqué une cassure dans le peloton, ne laissant qu'un petit groupe de favoris composé d'Egan Bernal (INEOS), Isaac del Toro, Primoz Roglic et Richard Carapaz (EF Education - EasyPost). Plus tard, plusieurs coureurs sont revenus, dont Juan Ayuso, Mads Pedersen (Lidl - Trek) et Wout Van Aert (Team Visma | Lease a Bike). Dans la descente, le groupe est remonté à une centaine de coureurs.
L'offensive de vitesse a cependant conduit à ce que la plupart des échappés soient rattrapés à 50 kilomètres de l'arrivée. Seul Lorenzo Germani a poursuivi l'échappée en solo et a été rejoint par derrière par Christian Scaroni (XDS Astana Team) juste avant le classement de la montagne. Comme le rythme du peloton a nettement baissé après la montée, les deux hommes ont d'abord creusé une avance d'une minute sur le plat.
A 20 kilomètres de l'arrivée, les coureurs ont emprunté une première fois la montée finale, classée en 4e catégorie, avant d'entamer un circuit final. Scaroni s'est détaché de Germani et s'est sauvé jusqu'au kilomètre Red Bull à dix kilomètres de l'arrivée, où son échappée a pris fin. Dans la descente suivante, Romain Bardet et Mathias Vacek ont attaqué et ont été repris dans le dernier kilomètre de la montée. La décision pour la victoire du jour s'est faite lors du sprint en montée.