
Thursday, May 29: Stage 18, Morbegno - Cesano Maderno, 144 km
Stage 18 map & profile | Stage 18 photos

Nico Denz wins stage 18. Sirotti photo
Bill & Carol McGann's book The Story of the Tour de France, 2021: The Little Cannibal Dominates is available in both Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the finish city of Cesano Maderno at 2:15 PM, local time: 28C (83F), sunny, with the wind from the northwest at 11 km/hr (7 mph). No rain is forecast.
The stage: Early hills are followed by about 60 km of steady descending on flat terrain. Roads are mostly straight with varying widths and pass through many towns, with the usual urban traffic features.
Final kilometers: A flat final circuit of about 13 km with several sharp corners that break up the long straights. In the last 3 km, there are only two curves, with the final one leading to a 750 m straight on 8-metre-wide asphalt.
The race: Stage seven winner Juan Ayuso (UAE Team Emirates-XRG) abandoned after a bee got in his helmet and stung him, leaving him with a badly swollen right eye. Earlier in the stage he had also hurt his knee.

It's time to race. Stage 18 gets started in the town of Morbegno under blue skies.
Here's the stage 18 report from second-place Mirco Maestri's Team Polti-VisitMalta:
Mirco Maestri was really close to the win in the 18th stage of the Giro d’Italia. The Team Polti VisitMalta rider fought from the breakaway for the win and was the fastest of the chasing group to finish second, only behind the winner Denz (Red Bull).
A short stage in the middle of the final week of the Giro, without the hardness of the mountain days but with enough terrain for adventure. With these ingredients, a very large group of 35 riders made their way, opening up a gap of over 11 minutes.
And obviously, from such a large group, a new attempt had to be made in search of the fight for the victory. Mirco Maestri was attentive, but he couldn’t get away from the winning move of Denz (Red Bull). The Italian fought back with a long sprint and was second, angry to see himself the fastest and to be so close to victory in the Giro d’Italia.

Thirty-man break with a lead of eight minutes with 60 km to go.
Davide Piganzoli, in the stage that started from his homeland and went through his usual roads, received all the support of the public and saved the day in anticipation of the remaining mountain stages.
Mirco Maestri: “I had this stage marked out before the start of the Giro. I was very close to winning, but even though I knew Denz’s abilities in these types of finishes very well, I wasn’t able to stop all the attacks from those I considered to be stronger riders. At the finish, I got second place, which is a great result, but it’s annoying to have come even closer to victory. I would have loved to give a victory of this level to the sponsors, to Polti, but it’s still a great result.”
Stefano Zanatta, sport director: “It’s a great second place for Mirco today. After yesterday’s stage, the goal today was to be in the breakaway, and we were able to have three reliable riders in: Lonardi, Mattia Bais, and Maestri. They rode focused and attentive to the moves, with Mirco able to get into the final breaks, and I think second place is very valuable given the level of the riders. We’re giving our all with each rider in this Giro, and with that morale, we face the remaining three stages.”
The Giro d’Italia enters its final days and this Friday tackles a 166-kilometer stage, with five climbs (three of them HC: Tzecore, Saint-Pantaléon, and Joux) before the finish in Champoluc.
Complete results:
144 kilometers raced at an average speed of 44.973 km/hr
| 1 | Nico Denz | Red Bull-BORA-hansgrohe | 3hr 12min 7sec |
| 2 | Mirco Maestri | Team Polti-VisitMalta | @ 1min 1sec |
| 3 | Edward Planckaert | Alpecin-Deceuninck | s.t. |
| 4 | Filippo Magli | VF Group-Bardiani CSF-Faizanè | s.t. |
| 5 | Alex Edmondson | Team Picnic PostNL | s.t. |
| 6 | Dries De Bondt | Decathlon AG2R La Mondiale | s.t. |
| 7 | Daan Hoole | Lidl-Trek | s.t. |
| 8 | Davide De Pretto | Team Jayco-AlUla | s.t. |
| 9 | Nicola Conci | XDS Astana Team | s.t. |
| 10 | Lawrence Warbasse | Tudor Pro Cycling Team | s.t. |
| 11 | Dylan van Baarle | Team Visma | Lease a Bike | s.t. |
| 12 | Rick Pluimers | Tudor Pro Cycling Team | 3:40 |
| 13 | Francesco Busatto | Intermarché-Wanty | s.t. |
| 14 | Christian Scaroni | XDS Astana Team | s.t. |
| 15 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 16 | Andrea Vendrame | Decathlon AG2R La Mondiale | s.t. |
| 17 | Fabio Van den Bossche | Alpecin-Deceuninck | s.t. |
| 18 | Giovanni Lonardi | Team Polti-VisitMalta | s.t. |
| 19 | Edoardo Zambanini | Bahrain Victorious | s.t. |
| 20 | Stefano Oldani | Cofidis | s.t. |
| 21 | Martin Marcellusi | VF Group-Bardiani CSF-Faizanè | s.t. |
| 22 | Jon Barrenetxea | Movistar Team | s.t. |
| 23 | Dorian Godon | Decathlon AG2R La Mondiale | s.t. |
| 24 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 25 | Stan Dewulf | Decathlon AG2R La Mondiale | s.t. |
| 26 | Rémy Rochas | Groupama-FDJ | s.t. |
| 27 | Alessandro Verre | Arkea-B&B Hotels | s.t. |
| 28 | Felix Engelhardt | Team Jayco-AlUla | s.t. |
| 29 | Diego Ulissi | XDS Astana Team | s.t. |
| 30 | Mads Pedersen | Lidl-Trek | 3:50 |
| 31 | Mattia Bais | Team Polti-VisitMalta | s.t. |
| 32 | Manuele Tarozzi | VF Group-Bardiani CSF-Faizanè | s.t. |
| 33 | Mathias Vacek | Lidl-Trek | s.t. |
| 34 | Mattia Cattaneo | Soudal Quick-Step | s.t. |
| 35 | Yannis Voisard | Tudor Pro Cycling Team | 4:16 |
| 36 | Milan Vader | Q36.5 Pro Cycling Team | 13:51 |
| 37 | Luca Covili | VF Group-Bardiani CSF-Faizanè | s.t. |
| 38 | Enrico Zanoncello | VF Group-Bardiani CSF-Faizanè | s.t. |
| 39 | Emils Liepins | Q36.5 Pro Cycling Team | s.t. |
| 40 | Filippo Fiorelli | VF Group-Bardiani CSF-Faizanè | s.t. |
| 41 | Tom Pidcock | Q36.5 Pro Cycling Team | s.t. |
| 42 | Clément Davy | Groupama-FDJ | s.t. |
| 43 | Kasper Asgreen | EF Education-EasyPost | s.t. |
| 44 | Francisco Muñoz | Team Polti-VisitMalta | s.t. |
| 45 | Filippo Baroncini | UAE Team Emirates-XRG | s.t. |
| 46 | Rafal Majka | UAE Team Emirates-XRG | s.t. |
| 47 | Igor Arrieta | UAE Team Emirates-XRG | s.t. |
| 48 | Mikkel Honore | EF Education-EasyPost | s.t. |
| 49 | Simon Yates | Team Visma | Lease a Bike | s.t. |
| 50 | Olav Kooij | Team Visma | Lease a Bike | s.t. |
| 51 | Derek Gee | Israel-Premier Tech | s.t. |
| 52 | Hugo Houle | Israel-Premier Tech | s.t. |
| 53 | Steven Kruijswijk | Team Visma | Lease a Bike | s.t. |
| 54 | Owain Doull | EF Education-EasyPost | s.t. |
| 55 | Niklas Märkl | Team Picnic PostNL | s.t. |
| 56 | Isaac del Toro | UAE Team Emirates-XRG | s.t. |
| 57 | Simon Clarke | Israel-Premier Tech | s.t. |
| 58 | Max Poole | Team Picnic PostNL | s.t. |
| 59 | Matteo Moschetti | Q36.5 Pro Cycling Team | s.t. |
| 60 | Brandon McNulty | UAE Team Emirates-XRG | s.t. |
| 61 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 62 | Corbin Strong | Israel-Premier Tech | s.t. |
| 63 | Richard Carapaz | EF Education-EasyPost | s.t. |
| 64 | Jakob Fuglsang | Israel-Premier Tech | s.t. |
| 65 | Casper van Uden | Team Picnic PostNL | s.t. |
| 66 | James Shaw | EF Education-EasyPost | s.t. |
| 67 | Nick Schultz | Israel-Premier Tech | s.t. |
| 68 | Marco Frigo | Israel-Premier Tech | s.t. |
| 69 | Ben Turner | INEOS Grenadiers | s.t. |
| 70 | Einer Rubio | Movistar Team | s.t. |
| 71 | Chris Hamilton | Team Picnic PostNL | s.t. |
| 72 | Anton Kuzmin | XDS Astana Team | s.t. |
| 73 | Wilco Kelderman | Team Visma | Lease a Bike | s.t. |
| 74 | Damiano Caruso | Bahrain Victorious | s.t. |
| 75 | Alexander Krieger | Tudor Pro Cycling Team | s.t. |
| 76 | Anthony Perez | Cofidis | s.t. |
| 77 | Giosue Epis | Arkea-B&B Hotels | s.t. |
| 78 | Davide Formolo | Movistar Team | s.t. |
| 79 | Jan Maas | Cofidis | s.t. |
| 80 | Kim Heiduk | INEOS Grenadiers | s.t. |
| 81 | Albert Torres | Movistar Team | s.t. |
| 82 | Darren Rafferty | EF Education-EasyPost | s.t. |
| 83 | Alexander Cepeda | EF Education-EasyPost | s.t. |
| 84 | Sergio Samitier | Cofidis | s.t. |
| 85 | Sylvain Moniquet | Cofidis | s.t. |
| 86 | Nicolas Debeaumarché | Cofidis | s.t. |
| 87 | Bart Lemmen | Team Visma | Lease a Bike | s.t. |
| 88 | Nairo Quintana | Movistar Team | s.t. |
| 89 | Thymen Arensman | INEOS Grenadiers | s.t. |
| 90 | Gerben Thijssen | Intermarché-Wanty | s.t. |
| 91 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 92 | Orluis Aular | Movistar Team | s.t. |
| 93 | Lorenzo Milesi | Movistar Team | s.t. |
| 94 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | s.t. |
| 95 | Davide Bais | Team Polti-VisitMalta | s.t. |
| 96 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 97 | Antonio Tiberi | Bahrain Victorious | s.t. |
| 98 | Martin Tjøtta | Arkea-B&B Hotels | s.t. |
| 99 | Egan Bernal | INEOS Grenadiers | s.t. |
| 100 | Louis Meintjes | Intermarché-Wanty | s.t. |
| 101 | Alessandro Tonelli | Team Polti-VisitMalta | s.t. |
| 102 | Ethan Hayter | Soudal Quick-Step | s.t. |
| 103 | Jan Tratnik | Red Bull-BORA-hansgrohe | s.t. |
| 104 | Daniel Martinez | Red Bull-BORA-hansgrohe | s.t. |
| 105 | Embret Svestad-Bårdseng | Arkea-B&B Hotels | s.t. |
| 106 | Kevin Colleoni | Intermarché-Wanty | s.t. |
| 107 | Filippo Zana | Team Jayco-AlUla | s.t. |
| 108 | Fausto Masnada | XDS Astana Team | s.t. |
| 109 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 110 | Georg Steinhauser | EF Education-EasyPost | s.t. |
| 111 | Luke Lamperti | Soudal Quick-Step | s.t. |
| 112 | Edoardo Affini | Team Visma | Lease a Bike | s.t. |
| 113 | Davide Piganzoli | Team Polti-VisitMalta | s.t. |
| 114 | Andrea Pietrobon | Team Polti-VisitMalta | s.t. |
| 115 | Wout Poels | XDS Astana Team | s.t. |
| 116 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 117 | Lorenzo Fortunato | XDS Astana Team | s.t. |
| 118 | Nicolas Prodhomme | Decathlon AG2R La Mondiale | s.t. |
| 119 | Gijs Van Hoecke | Intermarché-Wanty | s.t. |
| 120 | David Gaudu | Groupama-FDJ | s.t. |
| 121 | Matevz Govekar | Bahrain Victorious | s.t. |
| 122 | Simone Petilli | Intermarché-Wanty | s.t. |
| 123 | Laurens Huys | Arkea-B&B Hotels | s.t. |
| 124 | Quentin Pacher | Groupama-FDJ | s.t. |
| 125 | Kevin Geniets | Groupama-FDJ | s.t. |
| 126 | James Knox | Soudal Quick-Step | s.t. |
| 127 | Damien Howson | Q36.5 Pro Cycling Team | s.t. |
| 128 | Lorenzo Germani | Groupama-FDJ | s.t. |
| 129 | Max Kanter | XDS Astana Team | s.t. |
| 130 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 131 | Adam Yates | UAE Team Emirates-XRG | s.t. |
| 132 | Tord Gudmestad | Decathlon AG2R La Mondiale | s.t. |
| 133 | Josef Cerný | Soudal Quick-Step | s.t. |
| 134 | Afonso Eulalio | Bahrain Victorious | s.t. |
| 135 | Romain Bardet | Team Picnic PostNL | s.t. |
| 136 | Jefferson Cepeda | Movistar Team | s.t. |
| 137 | Fran Miholjevic | Bahrain Victorious | s.t. |
| 138 | Sven Erik Bystrøm | Groupama-FDJ | s.t. |
| 139 | Taco van der Hoorn | Intermarché-Wanty | s.t. |
| 140 | Pello Bilbao | Bahrain Victorious | s.t. |
| 141 | Jonathan Lastra | Cofidis | s.t. |
| 142 | Lucas Hamilton | INEOS Grenadiers | s.t. |
| 143 | Sam Bennett | Decathlon AG2R La Mondiale | s.t. |
| 144 | Patrick Konrad | Lidl-Trek | s.t. |
| 145 | Marco Brenner | Tudor Pro Cycling Team | s.t. |
| 146 | Mark Donovan | Q36.5 Pro Cycling Team | s.t. |
| 147 | Xabier Azparren | Q36.5 Pro Cycling Team | s.t. |
| 148 | Carlos Verona | Lidl-Trek | s.t. |
| 149 | Simon Guglielmi | Arkea-B&B Hotels | s.t. |
| 150 | Jensen Plowright | Alpecin-Deceuninck | s.t. |
| 151 | Jacopo Mosca | Lidl-Trek | s.t. |
| 152 | Luca Mozzato | Arkea-B&B Hotels | s.t. |
| 153 | Enzo Paleni | Groupama-FDJ | s.t. |
| 154 | Jonathan Castroviejo | INEOS Grenadiers | s.t. |
| 155 | Michael Hepburn | Team Jayco-AlUla | s.t. |
| 156 | Paul Double | Team Jayco-AlUla | s.t. |
| 157 | Chris Harper | Team Jayco-AlUla | s.t. |
| 158 | Jimmy Janssens | Alpecin-Deceuninck | s.t. |
| 159 | Quinten Hermans | Alpecin-Deceuninck | s.t. |
| 160 | Timo Kielich | Alpecin-Deceuninck | s.t. |
| 161 | Maikel Zijlaard | Tudor Pro Cycling Team | s.t. |
GC after stage 18:
2,929.3 kilometers raced so far at an average speed of 42.489 km/hr
| 1 | Isaac del Toro | UAE Team Emirates-XRG | 68hr 56min 32sec |
| 2 | Richard Carapaz | EF Education-EasyPost | @ 41sec |
| 3 | Simon Yates | Team Visma | Lease a Bike | 0:51 |
| 4 | Derek Gee | Israel-Premier Tech | 1:57 |
| 5 | Damiano Caruso | Bahrain Victorious | 3:06 |
| 6 | Egan Bernal | INEOS Grenadiers | 4:43 |
| 7 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 5:02 |
| 8 | Einer Rubio | Movistar Team | 6:09 |
| 9 | Adam Yates | UAE Team Emirates-XRG | 7:45 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 7:46 |
| 11 | Max Poole | Team Picnic PostNL | 8:00 |
| 12 | Brandon McNulty | UAE Team Emirates-XRG | 9:03 |
| 13 | Tom Pidcock | Q36.5 Pro Cycling Team | 9:55 |
| 14 | Davide Piganzoli | Team Polti-VisitMalta | 11:31 |
| 15 | Antonio Tiberi | Bahrain Victorious | 14:48 |
| 16 | Rafal Majka | UAE Team Emirates-XRG | 18:00 |
| 17 | Nicolas Prodhomme | Decathlon AG2R La Mondiale | 25:05 |
| 18 | James Knox | Soudal Quick-Step | 28:10 |
| 19 | Diego Ulissi | XDS Astana Team | 29:57 |
| 20 | Embret Svestad-Bårdseng | Arkea-B&B Hotels | 32:38 |
| 21 | Louis Meintjes | Intermarché-Wanty | 36:16 |
| 22 | Nairo Quintana | Movistar Team | 38:42 |
| 23 | Thymen Arensman | INEOS Grenadiers | 40:43 |
| 24 | Florian Stork | Tudor Pro Cycling Team | 43:36 |
| 25 | Lorenzo Fortunato | XDS Astana Team | 48:42 |
| 26 | Edoardo Zambanini | Bahrain Victorious | 52:31 |
| 27 | Marco Frigo | Israel-Premier Tech | 52:39 |
| 28 | Chris Harper | Team Jayco-AlUla | 59:27 |
| 29 | Romain Bardet | Team Picnic PostNL | 59:56 |
| 30 | Davide Formolo | Movistar Team | 1:16:05 |
| 31 | Andrea Vendrame | Decathlon AG2R La Mondiale | 1:18:25 |
| 32 | Kevin Geniets | Groupama-FDJ | 1:18:31 |
| 33 | Yannis Voisard | Tudor Pro Cycling Team | 1:20:49 |
| 34 | Wilco Kelderman | Team Visma | Lease a Bike | 1:22:25 |
| 35 | Igor Arrieta | UAE Team Emirates-XRG | 1:25:41 |
| 36 | Gianmarco Garofoli | Soudal Quick-Step | 1:27:04 |
| 37 | Alexander Cepeda | EF Education-EasyPost | 1:27:33 |
| 38 | Pello Bilbao | Bahrain Victorious | 1:27:55 |
| 39 | Jefferson Cepeda | Movistar Team | 1:31:10 |
| 40 | Martin Tjøtta | Arkea-B&B Hotels | 1:31:39 |
| 41 | Steven Kruijswijk | Team Visma | Lease a Bike | 1:34:12 |
| 42 | Damien Howson | Q36.5 Pro Cycling Team | 1:34:28 |
| 43 | Mattia Cattaneo | Soudal Quick-Step | 1:35:40 |
| 44 | Filippo Zana | Team Jayco-AlUla | 1:36:02 |
| 45 | Christian Scaroni | XDS Astana Team | 1:36:03 |
| 46 | Mathias Vacek | Lidl-Trek | 1:36:07 |
| 47 | Nicola Conci | XDS Astana Team | 1:36:41 |
| 48 | Rémy Rochas | Groupama-FDJ | 1:37:14 |
| 49 | Fausto Masnada | XDS Astana Team | 1:37:30 |
| 50 | Alessandro Tonelli | Team Polti-VisitMalta | 1:39:35 |
| 51 | Daniel Martinez | Red Bull-BORA-hansgrohe | 1:39:38 |
| 52 | Bart Lemmen | Team Visma | Lease a Bike | 1:40:00 |
| 53 | Chris Hamilton | Team Picnic PostNL | 1:41:58 |
| 54 | Simone Petilli | Intermarché-Wanty | 1:47:02 |
| 55 | Jonathan Lastra | Cofidis | 1:47:42 |
| 56 | Wout Poels | XDS Astana Team | 1:49:58 |
| 57 | Mark Donovan | Q36.5 Pro Cycling Team | 1:51:29 |
| 58 | Stefano Oldani | Cofidis | 1:51:32 |
| 59 | Gijs Leemreize | Team Picnic PostNL | 1:52:59 |
| 60 | Sergio Samitier | Cofidis | 1:54:41 |
| 61 | Mattia Bais | Team Polti-VisitMalta | 1:54:56 |
| 62 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 1:55:09 |
| 63 | Hugo Houle | Israel-Premier Tech | 1:58:57 |
| 64 | David Gaudu | Groupama-FDJ | 2:02:28 |
| 65 | Jonathan Castroviejo | INEOS Grenadiers | 2:03:28 |
| 66 | Lorenzo Germani | Groupama-FDJ | 2:09:00 |
| 67 | Luca Covili | VF Group-Bardiani CSF-Faizanè | 2:10:04 |
| 68 | Lawrence Warbasse | Tudor Pro Cycling Team | 2:10:17 |
| 69 | Afonso Eulalio | Bahrain Victorious | 2:10:39 |
| 70 | Patrick Konrad | Lidl-Trek | 2:14:05 |
| 71 | Carlos Verona | Lidl-Trek | 2:15:22 |
| 72 | Quentin Pacher | Groupama-FDJ | 2:15:46 |
| 73 | Davide De Pretto | Team Jayco-AlUla | 2:17:51 |
| 74 | Jakob Fuglsang | Israel-Premier Tech | 2:24:17 |
| 75 | James Shaw | EF Education-EasyPost | 2:25:12 |
| 76 | Georg Steinhauser | EF Education-EasyPost | 2:25:14 |
| 77 | Felix Engelhardt | Team Jayco-AlUla | 2:26:06 |
| 78 | Dorian Godon | Decathlon AG2R La Mondiale | 2:29:22 |
| 79 | Mikkel Honore | EF Education-EasyPost | 2:33:02 |
| 80 | Filippo Baroncini | UAE Team Emirates-XRG | 2:35:39 |
| 81 | Wout van Aert | Team Visma | Lease a Bike | 2:35:55 |
| 82 | Jan Tratnik | Red Bull-BORA-hansgrohe | 2:38:00 |
| 83 | Milan Vader | Q36.5 Pro Cycling Team | 2:38:33 |
| 84 | Filippo Fiorelli | VF Group-Bardiani CSF-Faizanè | 2:41:38 |
| 85 | Simon Guglielmi | Arkea-B&B Hotels | 2:41:51 |
| 86 | Darren Rafferty | EF Education-EasyPost | 2:44:29 |
| 87 | Martin Marcellusi | VF Group-Bardiani CSF-Faizanè | 2:46:36 |
| 88 | Lorenzo Milesi | Movistar Team | 2:50:56 |
| 89 | Corbin Strong | Israel-Premier Tech | 2:51:06 |
| 90 | Jon Barrenetxea | Movistar Team | 2:52:51 |
| 91 | Quinten Hermans | Alpecin-Deceuninck | 2:53:11 |
| 92 | Sylvain Moniquet | Cofidis | 2:53:47 |
| 93 | Mads Pedersen | Lidl-Trek | 2:54:02 |
| 94 | Dylan van Baarle | Team Visma | Lease a Bike | 2:55:14 |
| 95 | Manuele Tarozzi | VF Group-Bardiani CSF-Faizanè | 2:56:01 |
| 96 | Fabio Van den Bossche | Alpecin-Deceuninck | 2:57:19 |
| 97 | Timo Kielich | Alpecin-Deceuninck | 3:02:49 |
| 98 | Davide Bais | Team Polti-VisitMalta | 3:04:09 |
| 99 | Mirco Maestri | Team Polti-VisitMalta | 3:05:37 |
| 100 | Edward Planckaert | Alpecin-Deceuninck | 3:06:32 |
| 101 | Lucas Hamilton | INEOS Grenadiers | 3:09:45 |
| 102 | Orluis Aular | Movistar Team | 3:11:09 |
| 103 | Francesco Busatto | Intermarché-Wanty | 3:11:29 |
| 104 | Kaden Groves | Alpecin-Deceuninck | 3:15:28 |
| 105 | Laurens Huys | Arkea-B&B Hotels | s.t. |
| 106 | Paul Double | Team Jayco-AlUla | 3:17:53 |
| 107 | Rick Pluimers | Tudor Pro Cycling Team | 3:19:20 |
| 108 | Nick Schultz | Israel-Premier Tech | 3:27:16 |
| 109 | Filippo Magli | VF Group-Bardiani CSF-Faizanè | 3:28:54 |
| 110 | Stan Dewulf | Decathlon AG2R La Mondiale | 3:29:22 |
| 111 | Owain Doull | EF Education-EasyPost | 3:29:40 |
| 112 | Kasper Asgreen | EF Education-EasyPost | 3:32:56 |
| 113 | Kevin Colleoni | Intermarché-Wanty | 3:39:07 |
| 114 | Daan Hoole | Lidl-Trek | 3:42:15 |
| 115 | Alessandro Verre | Arkea-B&B Hotels | 3:42:25 |
| 116 | Enzo Paleni | Groupama-FDJ | 3:43:29 |
| 117 | Marco Brenner | Tudor Pro Cycling Team | 3:43:30 |
| 118 | Nico Denz | Red Bull-BORA-hansgrohe | 3:44:50 |
| 119 | Fran Miholjevic | Bahrain Victorious | 3:46:42 |
| 120 | Max Kanter | XDS Astana Team | 3:48:16 |
| 121 | Gianni Moscon | Red Bull-BORA-hansgrohe | 3:49:26 |
| 122 | Anthony Perez | Cofidis | 3:50:15 |
| 123 | Ben Turner | INEOS Grenadiers | 3:51:02 |
| 124 | Kim Heiduk | INEOS Grenadiers | 3:52:22 |
| 125 | Simon Clarke | Israel-Premier Tech | 3:54:19 |
| 126 | Xabier Azparren | Q36.5 Pro Cycling Team | 3:56:06 |
| 127 | Jacopo Mosca | Lidl-Trek | 3:58:24 |
| 128 | Albert Torres | Movistar Team | 3:58:47 |
| 129 | Dries De Bondt | Decathlon AG2R La Mondiale | 3:58:49 |
| 130 | Giovanni Lonardi | Team Polti-VisitMalta | 4:01:25 |
| 131 | Sven Erik Bystrøm | Groupama-FDJ | 4:09:35 |
| 132 | Tord Gudmestad | Decathlon AG2R La Mondiale | 4:10:08 |
| 133 | Edoardo Affini | Team Visma | Lease a Bike | 4:10:16 |
| 134 | Jimmy Janssens | Alpecin-Deceuninck | 4:10:39 |
| 135 | Emils Liepins | Q36.5 Pro Cycling Team | 4:11:07 |
| 136 | Andrea Pietrobon | Team Polti-VisitMalta | 4:11:59 |
| 137 | Giosue Epis | Arkea-B&B Hotels | 4:12:22 |
| 138 | Josef Cerný | Soudal Quick-Step | 4:13:34 |
| 139 | Luca Mozzato | Arkea-B&B Hotels | 4:14:25 |
| 140 | Nicolas Debeaumarché | Cofidis | 4:17:20 |
| 141 | Matevz Govekar | Bahrain Victorious | 4:19:23 |
| 142 | Alex Edmondson | Team Picnic PostNL | 4:19:29 |
| 143 | Luke Lamperti | Soudal Quick-Step | 4:19:44 |
| 144 | Ethan Hayter | Soudal Quick-Step | 4:20:28 |
| 145 | Michael Hepburn | Team Jayco-AlUla | 4:20:50 |
| 146 | Clément Davy | Groupama-FDJ | 4:21:18 |
| 147 | Sam Bennett | Decathlon AG2R La Mondiale | 4:21:33 |
| 148 | Francisco Muñoz | Team Polti-VisitMalta | 4:22:24 |
| 149 | Olav Kooij | Team Visma | Lease a Bike | 4:22:59 |
| 150 | Jan Maas | Cofidis | 4:23:32 |
| 151 | Casper van Uden | Team Picnic PostNL | 4:25:46 |
| 152 | Anton Kuzmin | XDS Astana Team | 4:26:44 |
| 153 | Matteo Moschetti | Q36.5 Pro Cycling Team | 4:32:51 |
| 154 | Enrico Zanoncello | VF Group-Bardiani CSF-Faizanè | 4:32:55 |
| 155 | Taco van der Hoorn | Intermarché-Wanty | 4:33:41 |
| 156 | Maikel Zijlaard | Tudor Pro Cycling Team | 4:34:10 |
| 157 | Gijs Van Hoecke | Intermarché-Wanty | 4:36:43 |
| 158 | Niklas Märkl | Team Picnic PostNL | 4:43:12 |
| 159 | Jensen Plowright | Alpecin-Deceuninck | 4:45:18 |
| 160 | Gerben Thijssen | Intermarché-Wanty | 4:45:53 |
| 161 | Alexander Krieger | Tudor Pro Cycling Team | 5:03:07 |
Stage 18 Map & profile:

Stage 18 map

Stage 18 profile
Stage 18 photos by Fotoreporter Sirotti:

Race leader Isaac del Toro is carefully protected by his teammates.

Wout van Aert riding in one of the day's breaks.

Nico Denz wins stage 18.

61 seconds later Mirco Maestri wins the field sprint.

Points classification leader Mads Pedersen finished 30th

Stage winner Nico Denz

King of the Mountains Lorenzo Fortunato

Mads Pedersen has the points classification wrapped up.

GC leader Isaac del Toro also leads the young rider category.

Isaac del Toro is closing in on winning the 2025 Giro d'Italia.