Après une rapide bataille pour l’échappée, 11 coureurs réussissent à fausser compagnie au peloton : le porteur du maillot à pois Jonas Abrahamsen, les Français Quentin Pacher (Groupama - FDJ), Axel Laurance (Alpecin-Deceuninck), Kévin Vauquelin (Arkéa-B&B Hotels) et Jordan Jegat (TotalEnergies), l’ancien porteur du maillot jaune Mike Teunissen (Intermarché-Wanty) et son compatriote Bram Welten qui se relève quelques kilomètres plus tard pour soutenir son équipe dsm-firmenich PostNL dans le peloton, le Canadien et ancien vainqueur d’étape sur le Tour, Hugo Houle (Israel-Premier Tech), le Colombien de la Astana Qazaqstan Harold Tejada, le jeune Espagnol Cristian Rodríguez (Arkéa-B&B Hotels) et le coureur de la Movistar Nélson Oliveira.
Juste avant le sprint intermédiaire, trois coureurs du peloton chutent dont deux de la formation néerlandaise Visma-Lease a Bike : Wout van Aert et Matteo Jorgenson et le Belge Laurens De Plus pour la Ineos Grenadiers. Les trois coureurs repartent rapidement et réintègrent le peloton quelques kilomètres plus loin.
Après que le peloton est revenu à 5 minutes des hommes de tête, l’échappée s’envole finalement et compte près de 9 minutes d’avance à 60 kilomètres de l’arrivée. Jordan Jegat place une première attaque dès le début de l’ascension du San Luca et lâche rapidement Hugo Houle. À 900 m du sommet, c’est Axel Laurance qui contre. Dans le peloton, ce sont les Visma-Lease a Bike qui accélèrent, revenant à moins de 4 minutes de la tête de la course. À la bascule de San Luca à 30 km de l’arrivée, il ne reste que six coureurs en tête : Kévin Vauquelin, Cristian Rodríguez, Quentin Pacher, Axel Laurance, Jonas Abrahamsen et Harold Tejada. Malgré ces attaques, les échappées se reforment dans la descente. Dans la seconde ascension de San Luca, Kévin Vauquelin lâche ses compagnons d’échappée pendant que, dans le peloton, Tadej Pogačar s’envole avec Jonas Vingegaard.
Le Français Kévin Vauquelin s'impose finalement à Bologne, tandis que, pour quelques favoris de l'épreuve, c'est le statu quo : Remco Evenepoel et Richard Carapaz parviennent à revenir sur Pogačar et Vingegaard à quelques mètres de l'arrivée. Pogačar s'empare du maillot jaune avec le même temps qu'Evenepoel, Vingegaard et Carapaz.