
Giro d'Italia results for every stage of every edition | 2025 Giro | Upcoming stages | Start list, teams presentation photos, organizer's route summary
Stage 1 | Stage 2 | Stage 3 | Rest Day 1 | Stage 4 | Stage 5 | Stage 6 | Stage 7 | Stage 8 | Stage 9 | Rest Day 2 | Stage 10 | Stage 11 | Stage 12 | Stage 13 | Stage 14 | Stage 15 | Rest Day 3 | Stage 16 | Stage 17 | Stage 18 | Stage 19 | Stage 20 | Stage 21

Map of the 2026 Giro d'Italia, December 1, 2025
Sunday, May 31: 21st & Final Stage, Rome - Rome, 131 km
Stage 21 map & profile | Stage 21 photos

Jonathan Milan wins stage 21. Sirotti photo
Bill and Carol McGann's book The Story of the Giro d'Italia, A Year-by-Year History of the Tour of Italy, Vol 1: 1909 - 1970 is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the start/finish city of Rome at 3:00 PM, local time: 31C (87F), fair, with the wind from the west-southwest at 14 km/hr (9 mph). No rain is forecast.
The stage: The final stage is divided into two parts. The approach section starts from Rome-EUR and heads to the coast, reaching Ostia, before returning to the start area. Riders then enter the final circuit, to be covered 8 times, entirely within the capital. The 9.5 km circuit runs on city roads – wide, but occasionally featuring central reservations. It alternates short undulations with long straights connected by sometimes technical corners. The road surface is mainly asphalt, with some short cobbled sections (so-called sanpietrini).
Final kilometers:
The final kilometers feature only slight changes of direction. The finishing straight is 350 m long on 8 m wide asphalt. Midway through the last kilometer, the road rises at a gradient of around 5%.
So far only 8 teams have tasted victory in this Giro.
The number is surprisingly low, yet it makes perfect sense given how heavily the stage wins have been concentrated among a handful of dominant squads. Visma–Lease a Bike lead the way with six victories, followed by UAE Team Emirates-XRG with four. Soudal and XDS Astana have taken three wins apiece, while Bahrain Victorious, Uno-X Mobility, INEOS Grenadiers and EF Education-EasyPost have all claimed one stage each.
For comparison, 11 different teams won stages in 2025, nine in 2024, 14 in both 2023 and 2021, and 12 in 2022.
It’s a clear reflection of how much this Giro has been controlled by a select group of powerhouse teams, with Visma–Lease a Bike and UAE Team Emirates-XRG particularly dominant throughout the three weeks.
The race:
Sean Flynn (Picnic-PostNL) did not start. His team announced, “Unfortunately, after contracting an infection, Sean Flynn will not start the final stage of the Giro d’Italia today.”
Here's the report from stage twenty-one second-place Giovanni Lonardi's Team Polti-VisitMalta:
Giovanni Lonardi was only beaten by Jonathan Milan (LTK) on the finish line in Rome, bringing the curtain down on the final stage of the Giro d’Italia. The Italian sprinter thus put the finishing touch on an outstanding collective performance by the Team Polti VisitMalta.

Stage 21 is about to start from Rome EUR.
The final stage of a Grand Tour usually follows a familiar script: a relaxed start, photos for the winners of the various classifications, a breakaway, and a bunch sprint. Rome was no exception, although there were more attacks than usual. Among them was a solo move from Mirco Maestri, the last rider to try his luck, with just three kilometres remaining.

Stage 21 gets its official start.
Perfectly positioned by Maestri himself, Lonardi played his cards in the final metres. He waited for the right moment to launch his sprint and powered to a superb second place, securing the team’s second podium finish of this edition of the Giro d’Italia.

Time to celebrate with a little champagne.
Giovanni Ellena, the team’s sports director, reflected on the race after the finish: “It’s the end of a great Giro for the team, for a group that has raced proactively every single day. At times, I even had to hold them back a little because of how eager they were to attack. Finishing with a second place in Rome is the perfect way to close out a great race.”

The peloton rides along the coast at Lido di Ostia before heading back to Rome.
Team Polti VisitMalta concludes the Giro d’Italia in 12th place in the team classification, with Ludovico Crescioli as the squad’s best rider overall, finishing 27th in the general classification and 8th in the young rider ranking. More than 1,000 kilometres spent in breakaways, with Diego wining the breakaway prize, two stage runner-up finishes, seven top-10 results, six days in the Maglia Azzurra, and above all, the feeling of having given everything from the first stage to the last.

In Rome the peloton speeds by the Palatine Hill with ruins of the ancient Roman imperial palaces.

Here's the peloton going by the Victor Emmanuel II Monument, called by many Romans, "The Typewriter".

Racing in La Città Eterna (The Eternal City).
Complete results:
131 kilometers raced at an average speed of 42,296 km/hr
| 1 | Jonathan Milan | Lidl-Trek | 3hr 5min 50sec |
| 2 | Giovanni Lonardi | Team Polti-VisitMalta | s.t. |
| 3 | Paul Penhoët | Groupama-FDJ United | s.t. |
| 4 | Dylan Groenewegen | Unibet Rose Rockets | s.t. |
| 5 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 6 | Jensen Plowright | Alpecin-Premier Tech | s.t. |
| 7 | Tobias Lund Andresen | Decathlon CMA CGM Team | s.t. |
| 8 | Corbin Strong | NSN Cycling Team | s.t. |
| 9 | Toon Aerts | Lotto-Intermarché | s.t. |
| 10 | Luca Mozzato | Tudor Pro Cycling Team | s.t. |
| 11 | Paul Magnier | Soudal Quick-Step | s.t. |
| 12 | Matteo Malucelli | XDS Astana Team | s.t. |
| 13 | Sakarias Koller Løland | Uno-X Mobility | s.t. |
| 14 | Edoardo Zambanini | Bahrain Victorious | s.t. |
| 15 | Orluis Aular | Movistar Team | s.t. |
| 16 | Alec Segaert | Bahrain Victorious | s.t. |
| 17 | Martin Marcellusi | Bardiani-CSF 7 Saber | s.t. |
| 18 | Iván García Cortina | Movistar Team | s.t. |
| 19 | Robert Donaldson | Team Jayco-AlUla | s.t. |
| 20 | Thomas Silva | XDS Astana Team | s.t. |
| 21 | Casper van Uden | Team Picnic PostNL | s.t. |
| 22 | António Morgado | UAE Team Emirates-XRG | s.t. |
| 23 | David González | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 24 | Mick van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 25 | Arjen Livyns | XDS Astana Team | s.t. |
| 26 | Magnus Sheffield | Netcompany INEOS Cycling Team | s.t. |
| 27 | Filippo Magli | Bardiani-CSF 7 Saber | s.t. |
| 28 | Mathys Rondel | Tudor Pro Cycling Team | s.t. |
| 29 | Robert Stannard | Bahrain Victorious | s.t. |
| 30 | Lorenzo Rota | Lotto-Intermarché | s.t. |
| 31 | Fran Miholjevic | Bahrain Victorious | s.t. |
| 32 | Tobias Bayer | Alpecin-Premier Tech | s.t. |
| 33 | Jai Hindley | Red Bull-BORA-hansgrohe | s.t. |
| 34 | Felix Gall | Decathlon CMA CGM Team | s.t. |
| 35 | Gregor Mühlberger | Decathlon CMA CGM Team | s.t. |
| 36 | Jan Hirt | NSN Cycling Team | s.t. |
| 37 | Thymen Arensman | Netcompany INEOS Cycling Team | s.t. |
| 38 | Lawrence Warbasse | Tudor Pro Cycling Team | s.t. |
| 39 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 40 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 41 | Cyril Barthe | Groupama-FDJ United | s.t. |
| 42 | Lorenzo Milesi | Movistar Team | s.t. |
| 43 | Robin Froidevaux | Tudor Pro Cycling Team | s.t. |
| 44 | Max Walscheid | Lidl-Trek | s.t. |
| 45 | Ryan Mullen | NSN Cycling Team | s.t. |
| 46 | Diego Sevilla | Team Polti-VisitMalta | s.t. |
| 47 | Johan Price-Pejtersen | Alpecin-Premier Tech | s.t. |
| 48 | Giulio Ciccone | Lidl-Trek | s.t. |
| 49 | Derek Gee-West | Lidl-Trek | s.t. |
| 50 | Ben Turner | Netcompany INEOS Cycling Team | s.t. |
| 51 | Damiano Caruso | Bahrain Victorious | s.t. |
| 52 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 53 | Fabio Van den Bossche | Soudal Quick-Step | s.t. |
| 54 | Afonso Eulalio | Bahrain Victorious | s.t. |
| 55 | Luca Paletti | Bardiani-CSF 7 Saber | s.t. |
| 56 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 57 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 58 | Jonas Rutsch | Lotto-Intermarché | s.t. |
| 59 | Martin López | XDS Astana Team | s.t. |
| 60 | Koen Bouwman | Team Jayco-AlUla | s.t. |
| 61 | William Barta | Tudor Pro Cycling Team | s.t. |
| 62 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 63 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | s.t. |
| 64 | Markus Hoelgaard | Uno-X Mobility | s.t. |
| 65 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 66 | Jonas Geens | Alpecin-Premier Tech | s.t. |
| 67 | Johannes Kulset | Uno-X Mobility | s.t. |
| 68 | Ludovico Crescioli | Team Polti-VisitMalta | s.t. |
| 69 | Jan Christen | UAE Team Emirates-XRG | s.t. |
| 70 | Fabian Lienhard | Tudor Pro Cycling Team | s.t. |
| 71 | Alberto Bettiol | XDS Astana Team | s.t. |
| 72 | Enric Mas | Movistar Team | s.t. |
| 73 | Elmar Reinders | Unibet Rose Rockets | s.t. |
| 74 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | s.t. |
| 75 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 76 | Mathijs Paasschens | Bahrain Victorious | s.t. |
| 77 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 78 | Mirco Maestri | Team Polti-VisitMalta | s.t. |
| 79 | Johannes Staune-Mittet | Decathlon CMA CGM Team | s.t. |
| 80 | Dries van Gestel | Soudal Quick-Step | s.t. |
| 81 | Rasmus Søjberg Pedersen | Decathlon CMA CGM Team | s.t. |
| 82 | Francesco Busatto | Alpecin-Premier Tech | s.t. |
| 83 | Alexander Cepeda | EF Education-EasyPost | s.t. |
| 84 | Igor Arrieta | UAE Team Emirates-XRG | s.t. |
| 85 | Axel Huens | Groupama-FDJ United | s.t. |
| 86 | Vicente Rojas | Bardiani-CSF 7 Saber | s.t. |
| 87 | Nelson Oliveira | Movistar Team | s.t. |
| 88 | Dion Smith | NSN Cycling Team | s.t. |
| 89 | Andrea Mifsud | Team Polti-VisitMalta | s.t. |
| 90 | Nick Schultz | NSN Cycling Team | s.t. |
| 91 | Wout Poels | Unibet Rose Rockets | s.t. |
| 92 | Einer Rubio | Movistar Team | s.t. |
| 93 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 94 | Simone Gualdi | Lotto-Intermarché | s.t. |
| 95 | Nikita Tsvetkov | Bardiani-CSF 7 Saber | s.t. |
| 96 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 97 | Mikkel Bjerg | UAE Team Emirates-XRG | s.t. |
| 98 | Jack Haig | Netcompany INEOS Cycling Team | s.t. |
| 99 | Connor Swift | Netcompany INEOS Cycling Team | s.t. |
| 100 | Jasper Stuyven | Soudal Quick-Step | s.t. |
| 101 | Davide Piganzoli | Team Visma | Lease a Bike | s.t. |
| 102 | Bart Lemmen | Team Visma | Lease a Bike | s.t. |
| 103 | Tim Rex | Team Visma | Lease a Bike | s.t. |
| 104 | Timo Kielich | Team Visma | Lease a Bike | s.t. |
| 105 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 106 | Victor Campenaerts | Team Visma | Lease a Bike | s.t. |
| 107 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 108 | Alessandro Tonelli | Team Polti-VisitMalta | s.t. |
| 109 | Manuele Tarozzi | Bardiani-CSF 7 Saber | s.t. |
| 110 | Tord Gudmestad | Decathlon CMA CGM Team | s.t. |
| 111 | Darren Rafferty | EF Education-EasyPost | s.t. |
| 112 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 113 | Alessandro Pinarello | NSN Cycling Team | @ 47sec |
| 114 | Oliver Naesen | Decathlon CMA CGM Team | s.t. |
| 115 | Tim Naberman | Team Picnic PostNL | s.t. |
| 116 | Andrea Raccagni Noviero | Soudal Quick-Step | s.t. |
| 117 | Frank van den Broek | Team Picnic PostNL | s.t. |
| 118 | Matyas Kopecky | Unibet Rose Rockets | 0:57 |
| 119 | Hartthijs de Vries | Unibet Rose Rockets | s.t. |
| 120 | Tim Torn Teutenberg | Lidl-Trek | s.t. |
| 121 | Chris Hamilton | Team Picnic PostNL | 1:04 |
| 122 | Simone Consonni | Lidl-Trek | s.t. |
| 123 | Matteo Sobrero | Lidl-Trek | s.t. |
| 124 | Alan Hatherly | Team Jayco-AlUla | s.t. |
| 125 | Nico Denz | Red Bull-BORA-hansgrohe | 1:23 |
| 126 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | s.t. |
| 127 | Filippo Turconi | Bardiani-CSF 7 Saber | s.t. |
| 128 | Mattia Bais | Team Polti-VisitMalta | s.t. |
| 129 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 130 | Juan Pedro Lopez | Movistar Team | s.t. |
| 131 | Thomas Pesenti | Team Polti-VisitMalta | s.t. |
| 132 | Fredrik Dversnes | Uno-X Mobility | 1:42 |
| 133 | Diego Ulissi | XDS Astana Team | 1:56 |
| 134 | Ayco Bastiaens | Soudal Quick-Step | s.t. |
| 135 | Filippo Zana | Soudal Quick-Step | s.t. |
| 136 | Christopher Juul-Jensen | Team Jayco-AlUla | s.t. |
| 137 | Filippo Ganna | Netcompany INEOS Cycling Team | s.t. |
| 138 | Markel Beloki | EF Education-EasyPost | s.t. |
| 139 | Jardi Van Der Lee | EF Education-EasyPost | s.t. |
| 140 | Remi Cavagna | Groupama-FDJ United | 2:34 |
| 141 | Brieuc Rolland | Groupama-FDJ United | s.t. |
| 142 | Lukas Kubis | Unibet Rose Rockets | 2:39 |
| 143 | Josh Kench | Groupama-FDJ United | s.t. |
| 144 | Johan Jacobs | Groupama-FDJ United | s.t. |
| 145 | Callum Scotson | Decathlon CMA CGM Team | 2:52 |
| 146 | Amanuel Ghebreigzabhier | Lidl-Trek | 2:57 |
| 147 | Warren Barguil | Team Picnic PostNL | 3:09 |
| 148 | Rémy Rochas | Groupama-FDJ United | s.t. |
| 149 | Tomas Kopecky | Unibet Rose Rockets | s.t. |
| 150 | Luca Vergallito | Alpecin-Premier Tech | 4:41 |
| 151 | Niklas Larsen | Unibet Rose Rockets | 4:54 |
Final GC after stage 21:
3,458.2 kilometers raced at an average speed of 41.475 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 83hr 22min 51sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 5min 22sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 6:25 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 7:02 |
| 5 | Derek Gee-West | Lidl-Trek | 7:56 |
| 6 | Afonso Eulalio | Bahrain Victorious | 9:39 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 10:13 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 10:52 |
| 9 | Damiano Caruso | Bahrain Victorious | 11:24 |
| 10 | Egan Bernal | Netcompany INEOS Cycling Team | 12:54 |
| 11 | Mathys Rondel | Tudor Pro Cycling Team | 15:12 |
| 12 | Jan Hirt | NSN Cycling Team | 22:06 |
| 13 | Sepp Kuss | Team Visma | Lease a Bike | 22:12 |
| 14 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 23:14 |
| 15 | Gregor Mühlberger | Decathlon CMA CGM Team | 23:53 |
| 16 | Ben O'Connor | Team Jayco-AlUla | 24:12 |
| 17 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 30:43 |
| 18 | Johannes Kulset | Uno-X Mobility | 34:26 |
| 19 | Igor Arrieta | UAE Team Emirates-XRG | 55:50 |
| 20 | Giulio Ciccone | Lidl-Trek | 56:40 |
| 21 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 58:16 |
| 22 | Wout Poels | Unibet Rose Rockets | 1:02:10 |
| 23 | Einer Rubio | Movistar Team | 1:04:26 |
| 24 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | 1:13:39 |
| 25 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 1:15:21 |
| 26 | Koen Bouwman | Team Jayco-AlUla | 1:21:21 |
| 27 | Ludovico Crescioli | Team Polti-VisitMalta | 1:22:57 |
| 28 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 1:27:04 |
| 29 | Gianmarco Garofoli | Soudal Quick-Step | 1:39:03 |
| 30 | Bart Lemmen | Team Visma | Lease a Bike | 1:43:35 |
| 31 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 1:47:36 |
| 32 | Enric Mas | Movistar Team | 1:48:28 |
| 33 | Callum Scotson | Decathlon CMA CGM Team | 1:50:13 |
| 34 | Johannes Staune-Mittet | Decathlon CMA CGM Team | 1:54:21 |
| 35 | Markel Beloki | EF Education-EasyPost | 1:57:24 |
| 36 | William Barta | Tudor Pro Cycling Team | 1:59:28 |
| 37 | Andreas Leknessund | Uno-X Mobility | 2:00:30 |
| 38 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | 2:03:23 |
| 39 | Florian Stork | Tudor Pro Cycling Team | 2:05:31 |
| 40 | Jack Haig | Netcompany INEOS Cycling Team | 2:05:45 |
| 41 | Juan Pedro Lopez | Movistar Team | 2:06:30 |
| 42 | Magnus Sheffield | Netcompany INEOS Cycling Team | 2:13:46 |
| 43 | Victor Campenaerts | Team Visma | Lease a Bike | 2:22:36 |
| 44 | Simone Gualdi | Lotto-Intermarché | 2:23:20 |
| 45 | Edoardo Zambanini | Bahrain Victorious | 2:30:59 |
| 46 | Diego Ulissi | XDS Astana Team | 2:31:00 |
| 47 | Alessandro Tonelli | Team Polti-VisitMalta | 2:35:14 |
| 48 | Alan Hatherly | Team Jayco-AlUla | 2:35:45 |
| 49 | Lorenzo Milesi | Movistar Team | 2:37:10 |
| 50 | Martin López | XDS Astana Team | 2:38:11 |
| 51 | Lawrence Warbasse | Tudor Pro Cycling Team | 2:40:46 |
| 52 | Josh Kench | Groupama-FDJ United | 2:45:22 |
| 53 | Rémy Rochas | Groupama-FDJ United | 2:51:41 |
| 54 | Matteo Sobrero | Lidl-Trek | 3:04:43 |
| 55 | Andrea Raccagni Noviero | Soudal Quick-Step | 3:05:26 |
| 56 | Brieuc Rolland | Groupama-FDJ United | 3:07:56 |
| 57 | Warren Barguil | Team Picnic PostNL | 3:12:32 |
| 58 | Toon Aerts | Lotto-Intermarché | 3:17:13 |
| 59 | Jan Christen | UAE Team Emirates-XRG | 3:26:08 |
| 60 | Filippo Zana | Soudal Quick-Step | 3:27:17 |
| 61 | Alessandro Pinarello | NSN Cycling Team | 3:27:38 |
| 62 | Nick Schultz | NSN Cycling Team | 3:29:39 |
| 63 | Alberto Bettiol | XDS Astana Team | 3:34:04 |
| 64 | Alexander Cepeda | EF Education-EasyPost | 3:34:37 |
| 65 | Thomas Silva | XDS Astana Team | 3:35:10 |
| 66 | Nelson Oliveira | Movistar Team | 3:38:31 |
| 67 | Markus Hoelgaard | Uno-X Mobility | 3:42:04 |
| 68 | Lorenzo Rota | Lotto-Intermarché | 3:43:54 |
| 69 | Andrea Mifsud | Team Polti-VisitMalta | 3:44:47 |
| 70 | Jasper Stuyven | Soudal Quick-Step | 3:46:19 |
| 71 | Thomas Pesenti | Team Polti-VisitMalta | 3:46:42 |
| 72 | Alec Segaert | Bahrain Victorious | 3:48:39 |
| 73 | Jardi Van Der Lee | EF Education-EasyPost | 3:51:21 |
| 74 | Gianni Moscon | Red Bull-BORA-hansgrohe | 3:54:30 |
| 75 | Mick van Dijke | Red Bull-BORA-hansgrohe | 3:55:29 |
| 76 | Ben Turner | Netcompany INEOS Cycling Team | 3:56:03 |
| 77 | Connor Swift | Netcompany INEOS Cycling Team | 3:57:12 |
| 78 | Oliver Naesen | Decathlon CMA CGM Team | 3:59:42 |
| 79 | Orluis Aular | Movistar Team | 3:59:55 |
| 80 | Tobias Bayer | Alpecin-Premier Tech | 4:00:21 |
| 81 | Francesco Busatto | Alpecin-Premier Tech | 4:01:30 |
| 82 | Manuele Tarozzi | Bardiani-CSF 7 Saber | 4:02:50 |
| 83 | Axel Huens | Groupama-FDJ United | 4:02:51 |
| 84 | Chris Hamilton | Team Picnic PostNL | 4:04:39 |
| 85 | Mattia Bais | Team Polti-VisitMalta | 4:08:18 |
| 86 | Christopher Juul-Jensen | Team Jayco-AlUla | 4:09:17 |
| 87 | Mathijs Paasschens | Bahrain Victorious | 4:12:28 |
| 88 | Corbin Strong | NSN Cycling Team | 4:13:20 |
| 89 | Amanuel Ghebreigzabhier | Lidl-Trek | 4:15:40 |
| 90 | Tim Rex | Team Visma | Lease a Bike | 4:15:41 |
| 91 | Luca Vergallito | Alpecin-Premier Tech | 4:16:46 |
| 92 | Darren Rafferty | EF Education-EasyPost | 4:18:31 |
| 93 | Johan Jacobs | Groupama-FDJ United | 4:19:24 |
| 94 | Diego Sevilla | Team Polti-VisitMalta | 4:23:28 |
| 95 | Gijs Leemreize | Team Picnic PostNL | 4:23:36 |
| 96 | Fran Miholjevic | Bahrain Victorious | 4:23:50 |
| 97 | Mirco Maestri | Team Polti-VisitMalta | 4:24:46 |
| 98 | Filippo Turconi | Bardiani-CSF 7 Saber | 4:25:07 |
| 99 | Filippo Ganna | Netcompany INEOS Cycling Team | 4:25:32 |
| 100 | David González | Pinarello-Q36.5 Pro Cycling Team | 4:27:13 |
| 101 | Luca Paletti | Bardiani-CSF 7 Saber | 4:27:50 |
| 102 | Mikkel Bjerg | UAE Team Emirates-XRG | 4:30:32 |
| 103 | Vicente Rojas | Bardiani-CSF 7 Saber | 4:30:37 |
| 104 | Robert Stannard | Bahrain Victorious | 4:31:17 |
| 105 | Fabio Van den Bossche | Soudal Quick-Step | 4:31:26 |
| 106 | Jonas Rutsch | Lotto-Intermarché | 4:32:30 |
| 107 | Jonas Geens | Alpecin-Premier Tech | 4:32:34 |
| 108 | Cyril Barthe | Groupama-FDJ United | 4:34:21 |
| 109 | Nikita Tsvetkov | Bardiani-CSF 7 Saber | 4:36:23 |
| 110 | Remi Cavagna | Groupama-FDJ United | 4:39:53 |
| 111 | Madis Mihkels | EF Education-EasyPost | 4:42:46 |
| 112 | Fredrik Dversnes | Uno-X Mobility | 4:44:07 |
| 113 | Rasmus Søjberg Pedersen | Decathlon CMA CGM Team | 4:45:22 |
| 114 | Iván García Cortina | Movistar Team | 4:45:40 |
| 115 | Paul Magnier | Soudal Quick-Step | 4:52:33 |
| 116 | Filippo Magli | Bardiani-CSF 7 Saber | 4:53:41 |
| 117 | Sakarias Koller Løland | Uno-X Mobility | 5:00:06 |
| 118 | Robert Donaldson | Team Jayco-AlUla | 5:04:29 |
| 119 | Timo Kielich | Team Visma | Lease a Bike | 5:07:50 |
| 120 | Martin Marcellusi | Bardiani-CSF 7 Saber | 5:12:44 |
| 121 | Nico Denz | Red Bull-BORA-hansgrohe | 5:15:36 |
| 122 | Tobias Lund Andresen | Decathlon CMA CGM Team | 5:17:08 |
| 123 | Dion Smith | NSN Cycling Team | 5:23:40 |
| 124 | Jonathan Milan | Lidl-Trek | 5:25:34 |
| 125 | António Morgado | UAE Team Emirates-XRG | 5:25:56 |
| 126 | Casper van Uden | Team Picnic PostNL | 5:26:24 |
| 127 | Ayco Bastiaens | Soudal Quick-Step | 5:28:38 |
| 128 | Paul Penhoët | Groupama-FDJ United | 5:29:32 |
| 129 | Niklas Larsen | Unibet Rose Rockets | 5:30:53 |
| 130 | Jensen Plowright | Alpecin-Premier Tech | 5:30:57 |
| 131 | Dries van Gestel | Soudal Quick-Step | 5:32:43 |
| 132 | Tim Naberman | Team Picnic PostNL | 5:33:04 |
| 133 | Giovanni Lonardi | Team Polti-VisitMalta | 5:33:10 |
| 134 | Ryan Mullen | NSN Cycling Team | 5:34:35 |
| 135 | Arjen Livyns | XDS Astana Team | 5:35:05 |
| 136 | Tord Gudmestad | Decathlon CMA CGM Team | 5:37:26 |
| 137 | Tim Torn Teutenberg | Lidl-Trek | 5:38:50 |
| 138 | Lukas Kubis | Unibet Rose Rockets | 5:42:19 |
| 139 | Matyas Kopecky | Unibet Rose Rockets | 5:46:46 |
| 140 | Johan Price-Pejtersen | Alpecin-Premier Tech | 5:47:55 |
| 141 | Max Walscheid | Lidl-Trek | 5:49:50 |
| 142 | Luca Mozzato | Tudor Pro Cycling Team | 5:53:17 |
| 143 | Tomas Kopecky | Unibet Rose Rockets | 5:53:23 |
| 144 | Elmar Reinders | Unibet Rose Rockets | 5:54:57 |
| 145 | Hartthijs de Vries | Unibet Rose Rockets | s.t. |
| 146 | Fabian Lienhard | Tudor Pro Cycling Team | 5:55:15 |
| 147 | Robin Froidevaux | Tudor Pro Cycling Team | 5:56:27 |
| 148 | Dylan Groenewegen | Unibet Rose Rockets | 5:57:17 |
| 149 | Frank van den Broek | Team Picnic PostNL | 5:59:46 |
| 150 | Simone Consonni | Lidl-Trek | 6:02:53 |
| 151 | Matteo Malucelli | XDS Astana Team | 6:13:45 |
Complete mountains classification after stage 21:
| 1 | Giulio Ciccone | Lidl-Trek | 277 Points |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | 266 |
| 3 | Einer Rubio | Movistar Team | 164 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 124 |
| 5 | Jardi Van Der Lee | EF Education-EasyPost | 108 |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 65 |
| 7 | Diego Sevilla | Team Polti-VisitMalta | 63 |
| 8 | Igor Arrieta | UAE Team Emirates-XRG | 55 |
| 9 | Derek Gee-West | Lidl-Trek | 54 |
| 10 | Jack Haig | Netcompany INEOS Cycling Team | 40 |
| 11 | Mattia Bais | Team Polti-VisitMalta | 39 |
| 12 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 39 |
| 13 | Sepp Kuss | Team Visma | Lease a Bike | 38 |
| 14 | Andreas Leknessund | Uno-X Mobility | 33 |
| 15 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 30 |
| 16 | Davide Piganzoli | Team Visma | Lease a Bike | 29 |
| 17 | Thymen Arensman | Netcompany INEOS Cycling Team | 28 |
| 18 | Enric Mas | Movistar Team | 23 |
| 19 | Afonso Eulalio | Bahrain Victorious | 19 |
| 20 | Nelson Oliveira | Movistar Team | 18 |
| 21 | Lawrence Warbasse | Tudor Pro Cycling Team | 18 |
| 22 | Jan Christen | UAE Team Emirates-XRG | 18 |
| 23 | Manuele Tarozzi | Bardiani-CSF 7 Saber | 18 |
| 24 | Alessandro Tonelli | Team Polti-VisitMalta | 15 |
| 25 | Damiano Caruso | Bahrain Victorious | 15 |
| 26 | Ludovico Crescioli | Team Polti-VisitMalta | 13 |
| 27 | Axel Huens | Groupama-FDJ United | 13 |
| 28 | Jonas Geens | Alpecin-Premier Tech | 13 |
| 29 | Mikkel Bjerg | UAE Team Emirates-XRG | 12 |
| 30 | Remi Cavagna | Groupama-FDJ United | 11 |
| 31 | Michael Storer | Tudor Pro Cycling Team | 11 |
| 32 | Alberto Bettiol | XDS Astana Team | 10 |
| 33 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 10 |
| 34 | Thomas Silva | XDS Astana Team | 10 |
| 35 | Mathys Rondel | Tudor Pro Cycling Team | 9 |
| 36 | Mirco Maestri | Team Polti-VisitMalta | 9 |
| 37 | Gianmarco Garofoli | Soudal Quick-Step | 8 |
| 38 | Orluis Aular | Movistar Team | 8 |
| 39 | Lorenzo Milesi | Movistar Team | 7 |
| 40 | Egan Bernal | Netcompany INEOS Cycling Team | 6 |
| 41 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 6 |
| 42 | Ben O'Connor | Team Jayco-AlUla | 6 |
| 43 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | 6 |
| 44 | Diego Ulissi | XDS Astana Team | 5 |
| 45 | William Barta | Tudor Pro Cycling Team | 4 |
| 46 | Alexander Cepeda | EF Education-EasyPost | 4 |
| 47 | Andrea Mifsud | Team Polti-VisitMalta | 4 |
| 48 | Tim Naberman | Team Picnic PostNL | 4 |
| 49 | Jan Hirt | NSN Cycling Team | 3 |
| 50 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | 3 |
| 51 | Tim Rex | Team Visma | Lease a Bike | 3 |
| 52 | Johannes Kulset | Uno-X Mobility | 2 |
| 53 | Florian Stork | Tudor Pro Cycling Team | 2 |
| 54 | Victor Campenaerts | Team Visma | Lease a Bike | 2 |
| 55 | Josh Kench | Groupama-FDJ United | 2 |
| 56 | Filippo Zana | Soudal Quick-Step | 2 |
| 57 | Johan Jacobs | Groupama-FDJ United | 2 |
| 58 | Fredrik Dversnes | Uno-X Mobility | 2 |
| 59 | Timo Kielich | Team Visma | Lease a Bike | 2 |
| 60 | Ryan Mullen | NSN Cycling Team | 2 |
| 61 | Hartthijs de Vries | Unibet Rose Rockets | 2 |
| 62 | Wout Poels | Unibet Rose Rockets | 1 |
| 63 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 1 |
| 64 | Nick Schultz | NSN Cycling Team | 1 |
| 65 | Christopher Juul-Jensen | Team Jayco-AlUla | 1 |
| 66 | Mathijs Paasschens | Bahrain Victorious | 1 |
| 67 | Fran Miholjevic | Bahrain Victorious | 1 |
| 68 | Martin Marcellusi | Bardiani-CSF 7 Saber | 1 |
| 69 | Nico Denz | Red Bull-BORA-hansgrohe | 1 |
| 70 | Ayco Bastiaens | Soudal Quick-Step | 1 |
| 71 | Niklas Larsen | Unibet Rose Rockets | 1 |
| 72 | Frank van den Broek | Team Picnic PostNL | 1 |
Complete points classification after stage 21:
| 1 | Paul Magnier | Soudal Quick-Step | 200 Points |
| 2 | Jonathan Milan | Lidl-Trek | 153 |
| 3 | Thomas Silva | XDS Astana Team | 99 |
| 4 | Andreas Leknessund | Uno-X Mobility | 87 |
| 5 | Jonas Vingegaard | Team Visma | Lease a Bike | 81 |
| 6 | Jasper Stuyven | Soudal Quick-Step | 75 |
| 7 | Mattia Bais | Team Polti-VisitMalta | 74 |
| 8 | Giulio Ciccone | Lidl-Trek | 69 |
| 9 | Felix Gall | Decathlon CMA CGM Team | 67 |
| 10 | Manuele Tarozzi | Bardiani-CSF 7 Saber | 66 |
| 11 | Madis Mihkels | EF Education-EasyPost | 66 |
| 12 | Alec Segaert | Bahrain Victorious | 62 |
| 13 | Tobias Lund Andresen | Decathlon CMA CGM Team | 62 |
| 14 | Fredrik Dversnes | Uno-X Mobility | 58 |
| 15 | Mirco Maestri | Team Polti-VisitMalta | 55 |
| 16 | Dylan Groenewegen | Unibet Rose Rockets | 55 |
| 17 | Martin Marcellusi | Bardiani-CSF 7 Saber | 53 |
| 18 | Giovanni Lonardi | Team Polti-VisitMalta | 53 |
| 19 | Diego Sevilla | Team Polti-VisitMalta | 49 |
| 20 | Orluis Aular | Movistar Team | 48 |
| 21 | Jai Hindley | Red Bull-BORA-hansgrohe | 46 |
| 22 | Toon Aerts | Lotto-Intermarché | 46 |
| 23 | Edoardo Zambanini | Bahrain Victorious | 44 |
| 24 | Afonso Eulalio | Bahrain Victorious | 43 |
| 25 | Igor Arrieta | UAE Team Emirates-XRG | 40 |
| 26 | Derek Gee-West | Lidl-Trek | 39 |
| 27 | Thymen Arensman | Netcompany INEOS Cycling Team | 38 |
| 28 | Ben Turner | Netcompany INEOS Cycling Team | 37 |
| 29 | Paul Penhoët | Groupama-FDJ United | 37 |
| 30 | Francesco Busatto | Alpecin-Premier Tech | 33 |
| 31 | Jensen Plowright | Alpecin-Premier Tech | 30 |
| 32 | Einer Rubio | Movistar Team | 28 |
| 33 | Corbin Strong | NSN Cycling Team | 26 |
| 34 | Alberto Bettiol | XDS Astana Team | 25 |
| 35 | Davide Piganzoli | Team Visma | Lease a Bike | 25 |
| 36 | Gianmarco Garofoli | Soudal Quick-Step | 25 |
| 37 | Diego Ulissi | XDS Astana Team | 25 |
| 38 | Florian Stork | Tudor Pro Cycling Team | 23 |
| 39 | Matteo Malucelli | XDS Astana Team | 23 |
| 40 | Filippo Magli | Bardiani-CSF 7 Saber | 22 |
| 41 | Luca Mozzato | Tudor Pro Cycling Team | 22 |
| 42 | Enric Mas | Movistar Team | 21 |
| 43 | Damiano Caruso | Bahrain Victorious | 20 |
| 44 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 19 |
| 45 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 19 |
| 46 | Jonas Geens | Alpecin-Premier Tech | 19 |
| 47 | Sepp Kuss | Team Visma | Lease a Bike | 18 |
| 48 | Lorenzo Milesi | Movistar Team | 17 |
| 49 | Sakarias Koller Løland | Uno-X Mobility | 16 |
| 50 | Filippo Ganna | Netcompany INEOS Cycling Team | 15 |
| 51 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 15 |
| 52 | Max Walscheid | Lidl-Trek | 15 |
| 53 | Alessandro Pinarello | NSN Cycling Team | 14 |
| 54 | Michael Storer | Tudor Pro Cycling Team | 13 |
| 55 | Filippo Turconi | Bardiani-CSF 7 Saber | 12 |
| 56 | Mathys Rondel | Tudor Pro Cycling Team | 12 |
| 57 | Mikkel Bjerg | UAE Team Emirates-XRG | 12 |
| 58 | David González | Pinarello-Q36.5 Pro Cycling Team | 11 |
| 59 | Egan Bernal | Netcompany INEOS Cycling Team | 10 |
| 60 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | 10 |
| 61 | Andrea Raccagni Noviero | Soudal Quick-Step | 10 |
| 62 | Warren Barguil | Team Picnic PostNL | 10 |
| 63 | Andrea Mifsud | Team Polti-VisitMalta | 9 |
| 64 | Jardi Van Der Lee | EF Education-EasyPost | 9 |
| 65 | Remi Cavagna | Groupama-FDJ United | 9 |
| 66 | Niklas Larsen | Unibet Rose Rockets | 9 |
| 67 | Tord Gudmestad | Decathlon CMA CGM Team | 8 |
| 68 | Matteo Sobrero | Lidl-Trek | 7 |
| 69 | Robin Froidevaux | Tudor Pro Cycling Team | 7 |
| 70 | Ben O'Connor | Team Jayco-AlUla | 6 |
| 71 | Wout Poels | Unibet Rose Rockets | 6 |
| 72 | Casper van Uden | Team Picnic PostNL | 6 |
| 73 | Dries van Gestel | Soudal Quick-Step | 6 |
| 74 | Lukas Kubis | Unibet Rose Rockets | 6 |
| 75 | Ludovico Crescioli | Team Polti-VisitMalta | 5 |
| 76 | Markel Beloki | EF Education-EasyPost | 5 |
| 77 | William Barta | Tudor Pro Cycling Team | 5 |
| 78 | Alessandro Tonelli | Team Polti-VisitMalta | 5 |
| 79 | Josh Kench | Groupama-FDJ United | 5 |
| 80 | Fabio Van den Bossche | Soudal Quick-Step | 5 |
| 81 | Tim Naberman | Team Picnic PostNL | 5 |
| 82 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 4 |
| 83 | Koen Bouwman | Team Jayco-AlUla | 4 |
| 84 | Johan Price-Pejtersen | Alpecin-Premier Tech | 4 |
| 85 | Johannes Kulset | Uno-X Mobility | 3 |
| 86 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | 3 |
| 87 | Pedro Lopez Juan | Movistar Team | 3 |
| 88 | Simone Gualdi | Lotto-Intermarché | 3 |
| 89 | Lawrence Warbasse | Tudor Pro Cycling Team | 3 |
| 90 | Jan Christen | UAE Team Emirates-XRG | 3 |
| 91 | Oliver Naesen | Decathlon CMA CGM Team | 3 |
| 92 | Luca Vergallito | Alpecin-Premier Tech | 3 |
| 93 | Jan Hirt | NSN Cycling Team | 2 |
| 94 | Markus Hoelgaard | Uno-X Mobility | 2 |
| 95 | Mick van Dijke | Red Bull-BORA-hansgrohe | 2 |
| 96 | Robert Stannard | Bahrain Victorious | 2 |
| 97 | Iván García Cortina | Movistar Team | 2 |
| 98 | Axel Huens | Groupama-FDJ United | 1 |
| 99 | Darren Rafferty | EF Education-EasyPost | 1 |
| 100 | Johan Jacobs | Groupama-FDJ United | 1 |
| 101 | Ayco Bastiaens | Soudal Quick-Step | 1 |
Young rider classification after stage 21:
| 1 | Afonso Eulalio | Bahrain Victorious | 83hr 32min 30sec |
| 2 | Davide Piganzoli | Team Visma | Lease a Bike | @ 1min 13sec |
| 3 | Mathys Rondel | Tudor Pro Cycling Team | 5:33 |
| 4 | Johannes Kulset | Uno-X Mobility | 24:47 |
| 5 | Igor Arrieta | UAE Team Emirates-XRG | 46:11 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 48:37 |
| 7 | Embret Svestad-Bårdseng | Netcompany INEOS Cycling Team | 1:04:00 |
| 8 | Ludovico Crescioli | Team Polti-VisitMalta | 1:13:18 |
| 9 | Gianmarco Garofoli | Soudal Quick-Step | 1:29:24 |
| 10 | Johannes Staune-Mittet | Decathlon CMA CGM Team | 1:44:42 |
| 11 | Markel Beloki | EF Education-EasyPost | 1:47:45 |
| 12 | Magnus Sheffield | Netcompany INEOS Cycling Team | 2:04:07 |
| 13 | Simone Gualdi | Lotto-Intermarché | 2:13:41 |
| 14 | Edoardo Zambanini | Bahrain Victorious | 2:21:20 |
| 15 | Lorenzo Milesi | Movistar Team | 2:27:31 |
| 16 | Josh Kench | Groupama-FDJ United | 2:35:43 |
| 17 | Andrea Raccagni Noviero | Soudal Quick-Step | 2:55:47 |
| 18 | Brieuc Rolland | Groupama-FDJ United | 2:58:17 |
| 19 | Jan Christen | UAE Team Emirates-XRG | 3:16:29 |
| 20 | Alessandro Pinarello | NSN Cycling Team | 3:17:59 |
| 21 | Thomas Silva | XDS Astana Team | 3:25:31 |
| 22 | Alec Segaert | Bahrain Victorious | 3:39:00 |
| 23 | Jardi Van Der Lee | EF Education-EasyPost | 3:41:42 |
| 24 | Francesco Busatto | Alpecin-Premier Tech | 3:51:51 |
| 25 | Axel Huens | Groupama-FDJ United | 3:53:12 |
| 26 | Tim Rex | Team Visma | Lease a Bike | 4:06:02 |
| 27 | Darren Rafferty | EF Education-EasyPost | 4:08:52 |
| 28 | Fran Miholjevic | Bahrain Victorious | 4:14:11 |
| 29 | Filippo Turconi | Bardiani-CSF 7 Saber | 4:15:28 |
| 30 | Luca Paletti | Bardiani-CSF 7 Saber | 4:18:11 |
| 31 | Vicente Rojas | Bardiani-CSF 7 Saber | 4:20:58 |
| 32 | Nikita Tsvetkov | Bardiani-CSF 7 Saber | 4:26:44 |
| 33 | Madis Mihkels | EF Education-EasyPost | 4:33:07 |
| 34 | Rasmus Søjberg Pedersen | Decathlon CMA CGM Team | 4:35:43 |
| 35 | Paul Magnier | Soudal Quick-Step | 4:42:54 |
| 36 | Sakarias Koller Løland | Uno-X Mobility | 4:50:27 |
| 37 | Robert Donaldson | Team Jayco-AlUla | 4:54:50 |
| 38 | Tobias Lund Andresen | Decathlon CMA CGM Team | 5:07:29 |
| 39 | António Morgado | UAE Team Emirates-XRG | 5:16:17 |
| 40 | Casper van Uden | Team Picnic PostNL | 5:16:45 |
| 41 | Paul Penhoët | Groupama-FDJ United | 5:19:53 |
| 42 | Tord Gudmestad | Decathlon CMA CGM Team | 5:27:47 |
| 43 | Tim Torn Teutenberg | Lidl-Trek | 5:29:11 |
| 44 | Matyas Kopecky | Unibet Rose Rockets | 5:37:07 |
Teams classification standings after stage 21:
| 1 | Team Visma | Lease a Bike | 250hr 42min 41sec |
| 2 | Netcompany INEOS Cycling Team | @ 40min 7sec |
| 3 | Red Bull-BORA-hansgrohe | 48:27 |
| 4 | Tudor Pro Cycling Team | 1:04:27 |
| 5 | Decathlon CMA CGM Team | 1:24:59 |
| 6 | Pinarello-Q36.5 Pro Cycling Team | 1:56:18 |
| 7 | Bahrain Victorious | 2:13:32 |
| 8 | Lidl-Trek | 3:03:21 |
| 9 | Movistar Team | 3:05:08 |
| 10 | Team Jayco-AlUla | 3:23:49 |
| 11 | Uno-X Mobility | 4:40:08 |
| 12 | Team Polti-VisitMalta | 5:02:03 |
| 13 | XDS Astana Team | 5:41:01 |
| 14 | UAE Team Emirates-XRG | 5:56:03 |
| 15 | EF Education-EasyPost | 5:59:52 |
| 16 | NSN Cycling Team | 6:10:08 |
| 17 | Soudal Quick-Step | 6:11:38 |
| 18 | Groupama-FDJ United | 6:12:57 |
| 19 | Lotto-Intermarché | 6:48:48 |
| 20 | Team Picnic PostNL | 10:08:25 |
| 21 | Bardiani-CSF 7 Saber | 10:19:41 |
| 22 | Alpecin-Premier Tech | 10:32:27 |
| 23 | Unibet Rose Rockets | 11:05:48 |
Stage 21 map & profile:

Stage 21 map

Stage 21 profile
Stage 21 photos by Fotoreporter Sirotti:

Filippo Ganna leads a break attempt.

Jonas Vingegaard is properly tucked in behind a couple of teammates as the pass by the Colosseum

Here they come...

Jonathan Milan wins stage 21.

Stage 21 winner Jonathan Milan

Points classification winner Paul Magnier

King of the Mountains Giulio Ciccone

Best young rider Afonso Eulalio

The final GC podium, from left: Felix Gall (2nd), Jonas Vingegaard (1st), & Jai Hindley (3rd)

Jonas Vingegaard enjoys his trophy with the Roman Forum in the background.

A champion's work is never done. Jonas Vingegaard signs souvenir jerseys.
Saturday, May 30: Stage 20, Gemona del Friuli 1976-2026 – Piancavallo, 200 km
Complete stage 20 results, stage story, photos, map & profile

Jonas Vingegaard has left his nearest chaser more than a minute behind to win the stage. RCS photo
Results:
200 kilometers raced at an average speed of 39.485 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 5hr 3min 55sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 1min 15sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | s.t. |
| 4 | Derek Gee-West | Lidl-Trek | s.t. |
| 5 | Thymen Arensman | Netcompany INEOS Cycling Team | 1:19 |
| 6 | Egan Bernal | Netcompany INEOS Cycling Team | 1:25 |
| 7 | Afonso Eulalio | Bahrain Victorious | 2:03 |
| 8 | Damiano Caruso | Bahrain Victorious | 2:13 |
| 9 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 10 | Davide Piganzoli | Team Visma | Lease a Bike | s.t. |
GC after stage 20:
3,334.9 kilometers raced so far at an average speed of 41.539 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 80hr 17min 1sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 5min 22sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 6:25 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 7:02 |
| 5 | Derek Gee-West | Lidl-Trek | 7:56 |
| 6 | Afonso Eulalio | Bahrain Victorious | 9:39 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 10:13 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 10:52 |
| 9 | Damiano Caruso | Bahrain Victorious | 11:24 |
| 10 | Egan Bernal | Netcompany INEOS Cycling Team | 12:54 |
Friday, May 29: Stage 19, Feltre - Alleghe (Piani di Pizzè), 151 km
Complete stage 19 results, stage story, photos, map & profile

Sepp Kuss wins stage 19.
Results:
151 kilometers raced at an average speed of 33.737 km/hr
| 1 | Sepp Kuss | Team Visma | Lease a Bike | 4hr 28min 33sec |
| 2 | Derek Gee-West | Lidl-Trek | @ 13sec |
| 3 | Giulio Ciccone | Lidl-Trek | 0:36 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 0:39 |
| 5 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 0:43 |
| 7 | Damiano Caruso | Bahrain Victorious | 1:06 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 1:11 |
| 9 | Einer Rubio | Movistar Team | 1:19 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 1:19 |
GC after stage 19:
3,134.9 kilometers raced so far at an average speed of 41.676 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 75hr 13min 16sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 4min 3sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 5:04 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 5:33 |
| 5 | Derek Gee-West | Lidl-Trek | 6:31 |
| 6 | Afonso Eulalio | Bahrain Victorious | 7:26 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 7:50 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 8:29 |
| 9 | Damiano Caruso | Bahrain Victorious | 9:01 |
| 10 | Egan Bernal | Netcompany INEOS Cycling Team | 11:19 |
Thursday, May 28: Stage 18, Fai della Paganella - Pieve di Soligo, 171 km
Complete stage 18 results, stage story, photos, map & profile

Super fast Paul Magnier wins his third stage this Giro.
Results:
171 kilometers raced at an average speed of 45.231 km/hr
| 1 | Paul Magnier | Soudal Quick-Step | 3hr 46min 50sec |
| 2 | Edoardo Zambanini | Bahrain Victorious | s.t. |
| 3 | Jonathan Milan | Lidl-Trek | s.t. |
| 4 | Francesco Busatto | Alpecin-Premier Tech | s.t. |
| 5 | Corbin Strong | NSN Cycling Team | s.t. |
| 6 | Thomas Silva | XDS Astana Team | s.t. |
| 7 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 8 | Filippo Magli | Bardiani-CSF 7 Saber | s.t. |
| 9 | Sakarias Koller Løland | Uno-X Mobility | s.t. |
| 10 | Lukas Kubis | Unibet Rose Rockets | s.t. |
GC after stage 18:
2,983.9 kilometers raced so far at an average speed of 42.185 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 70hr 44min 4sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 4min 3sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 4:27 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 5:00 |
| 5 | Afonso Eulalio | Bahrain Victorious | 5:40 |
| 6 | Derek Gee-West | Lidl-Trek | 7:09 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 7:14 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 7:57 |
| 9 | Damiano Caruso | Bahrain Victorious | 8:34 |
| 10 | Ben O'Connor | Team Jayco-AlUla | 9:20 |
Wednesday, May 27: Stage 17, Cassana d'Adda - Andalo, 202 km
Complete stage 17 results, stage story, photos, map & profile

Michael Valgren wins stage 17.
Results:
202 kilometers raced at an average speed of 43.047 km/hr
| 1 | Michael Valgren | EF Education-EasyPost | 4hr 41min 33sec |
| 2 | Andreas Leknessund | Uno-X Mobility | @ 3sec |
| 3 | Damiano Caruso | Bahrain Victorious | 0:06 |
| 4 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 5 | Einer Rubio | Movistar Team | s.t. |
| 6 | Igor Arrieta | UAE Team Emirates-XRG | 0:14 |
| 7 | Gianmarco Garofoli | Soudal Quick-Step | 0:52 |
| 8 | David de la Cruz | Pinarello-Q36.5 Pro Cycling Team | 1:08 |
| 9 | Jhonatan Narvaez | UAE Team Emirates-XRG | 1:44 |
| 10 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | s.t. |
GC after stage 17:
2,812.9 kilometers raced so far at an average speed of 42.013 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 66hr 57min 14sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 4min 3sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 4:27 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 5:00 |
| 5 | Afonso Eulalio | Bahrain Victorious | 5:40 |
| 6 | Derek Gee-West | Lidl-Trek | 7:09 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 7:14 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 7:57 |
| 9 | Damiano Caruso | Bahrain Victorious | 8:34 |
| 10 | Ben O'Connor | Team Jayco-AlUla | 9:20 |
Tuesday, May 26: Stage 16, Bellinzona - Cari, 113 km
Complete stage 16 results, stage story, photos, map & profile

Jonas Vingegaard wins stage 16 in pink. RCS photo
Results:
113 kilometers raced at an average speed of 38.161 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 2hr 57min 40sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 1min 9sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 1:11 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 1:14 |
| 5 | Derek Gee-West | Lidl-Trek | 1:18 |
| 6 | Davide Piganzoli | Team Visma | Lease a Bike | 1:34 |
| 7 | Egan Bernal | Netcompany INEOS Cycling Team | 2:04 |
| 8 | Michael Storer | Tudor Pro Cycling Team | 2:18 |
| 9 | Mathys Rondel | Tudor Pro Cycling Team | 2:55 |
| 10 | Wout Poels | Unibet Rose Rockets | 3:04 |
GC after stage 16:
2,610.9 kilometers raced so far at an average speed of 41.994 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 62hr 10min 26sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 4min 3sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 4:27 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 5:00 |
| 5 | Afonso Eulalio | Bahrain Victorious | 5:40 |
| 6 | Derek Gee-West | Lidl-Trek | 7:09 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 7:14 |
| 8 | Davide Piganzoli | Team Visma | Lease a Bike | 7:57 |
| 9 | Ben O'Connor | Team Jayco-AlUla | 9:20 |
| 10 | Egan Bernal | Netcompany INEOS Cycling Team | 9:44 |
Monday, May 25: Rest Day 3
Sunday, May 24: Stage 15, Voghera - Milano, 157 km
Complete stage 15 results, stage story, photos, map & profile

Uno-X rider Fredrik Dversnes wins stage 15. RCS photo
Results:
157 kilometers raced at an average speed of 51.391 km/hr
| 1 | Fredrik Dversnes | Uno-X Mobility | 3hr 3min 18sec |
| 2 | Mirco Maestri | Team Polti-VisitMalta | s.t. |
| 3 | Martin Marcellusi | Bardiani-CSF 7 Saber | s.t. |
| 4 | Mattia Bais | Team Polti-VisitMalta | s.t. |
| 5 | Paul Magnier | Soudal Quick-Step | @ 57sec |
| 6 | Dylan Groenewegen | Unibet Rose Rockets | s.t. |
| 7 | Tobias Lund Andresen | Decathlon CMA CGM Team | s.t. |
| 8 | Ethan Vernon | NSN Cycling Team | s.t. |
| 9 | Paul Penhoët | Groupama-FDJ United | s.t. |
| 10 | Luca Mozzato | Tudor Pro Cycling Team | s.t. |
GC after stage 15:
2,497.9 kilometers raced so far at an average speed of 42.183 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 59hr 12min 56sec |
| 2 | Afonso Eulalio | Bahrain Victorious | @ 2min 26sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 2:50 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 3:03 |
| 5 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:43 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:22 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 4:46 |
| 8 | Ben O'Connor | Team Jayco-AlUla | 5:22 |
| 9 | Derek Gee-West | Lidl-Trek | 5:41 |
| 10 | Davide Piganzoli | Team Visma | Lease a Bike | 6:13 |
Saturday, May 23: Stage 14, Aosta - Pila (Gressan), 133 km
Complete stage 14 results, stage story, photos, map & profile

Jonas Vingegaard has left his nearest chaser nearly a minute behind. He'll be wearing pink at the start of stage 15. Photo: LaPresse
Results:
133 kilometers raced at an average speed of 34.246 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 3hr 53min 1sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 49sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 0:58 |
| 4 | Davide Piganzoli | Team Visma | Lease a Bike | 1:03 |
| 5 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 6 | Thymen Arensman | Netcompany INEOS Cycling Team | 1:23 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 1:35 |
| 8 | Wout Poels | Unibet Rose Rockets | 2:08 |
| 9 | Jan Hirt | NSN Cycling Team | s.t. |
| 10 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
GC after stage 14:
2,340.9 kilometers raced so far at an average speed of 41.694 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 56hr 8min 41sec |
| 2 | Afonso Eulalio | Bahrain Victorious | @ 2min 26sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 2:50 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 3:03 |
| 5 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:43 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:22 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 4:46 |
| 8 | Ben O'Connor | Team Jayco-AlUla | 5:22 |
| 9 | Derek Gee-West | Lidl-Trek | 5:41 |
| 10 | Davide Piganzoli | Team Visma | Lease a Bike | 6:13 |
Friday, May 22: Stage 13, Alessandria - Verbania, 189 km
Complete stage 13 results, stage story, photos, map & profile

Alberto Bettiol solos across the line to win stage 13. Sirotti photo
Results:
189 kilometers raced at an average speed of 48.974 km/hr
| 1 | Alberto Bettiol | XDS Astana Team | 3hr 51min 33awx |
| 2 | Andreas Leknessund | Uno-X Mobility | @ 26sec |
| 3 | Jasper Stuyven | Soudal Quick-Step | 0:44 |
| 4 | Michael Valgren | EF Education-EasyPost | s.t. |
| 5 | Mark Donovan | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 6 | Josh Kench | Groupama-FDJ United | s.t. |
| 7 | Mikkel Bjerg | UAE Team Emirates-XRG | 1:33 |
| 8 | Francesco Busatto | Alpecin-Premier Tech | 1:35 |
| 9 | Markus Hoelgaard | Uno-X Mobility | s.t. |
| 10 | Diego Sevilla | Team Polti-VisitMalta | s.t. |
GC after stage 13:
2,207.9 kilometers raced so far at an average speed of 42.253 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 52hr 15min 17sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 33sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 2:03 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 2:30 |
| 5 | Ben O'Connor | Team Jayco-AlUla | 2:50 |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:12 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 3:34 |
| 8 | Derek Gee-West | Lidl-Trek | 3:40 |
| 9 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 3:42 |
| 10 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 4:15 |
Thursday, May 21: Stage 12, Imperia - Novi Ligure, 175 km
Complete stage 12 results, stage story, photos, map & profile

Alec Segaert wins stage 12. RCS photo
Results:
175 kilometers raced at an average speed of 45.064 km/hr
| 1 | Alec Segaert | Bahrain Victorious | 3hr 53min 0sec |
| 2 | Toon Aerts | Lotto-Intermarché | @ 3sec |
| 3 | Thomas Silva | XDS Astana Team | s.t. |
| 4 | Ethan Vernon | NSN Cycling Team | s.t. |
| 5 | Jasper Stuyven | Soudal Quick-Step | s.t. |
| 6 | Orluis Aular | Movistar Team | s.t. |
| 7 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 8 | Jhonatan Narvaez | UAE Team Emirates-XRG | s.t. |
| 9 | Edoardo Zambanini | Bahrain Victorious | s.t. |
| 10 | Sakarias Koller Løland | Uno-X Mobility | s.t. |
GC after stage 12:
2,018.9 kilometers raced so far at an average speed of 41.906 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 48hr 10min 38sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 33sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 2:03 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 2:30 |
| 5 | Ben O'Connor | Team Jayco-AlUla | 2:50 |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:12 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 3:34 |
| 8 | Derek Gee-West | Lidl-Trek | 3:40 |
| 9 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 3:42 |
| 10 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 4:15 |
Wednesday, May 20: Stage 11, Porcari - Chiavari, 195 km
Complete stage 11 results, stage story, photos, map & profile

A close one. Jhonatan Narvaez (right) just beats Enric Mas for the stage win. Sirotti photo
Results:
195 kilometers raced at an average speed of 42.745 km/hr
| 1 | Jhonatan Narvaez | UAE Team Emirates-XRG | 4hr 33min 43sec |
| 2 | Enric Mas | Movistar Team | s.t. |
| 3 | Diego Ulissi | XDS Astana Team | @ 11sec |
| 4 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | s.t. |
| 5 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 6 | Christian Scaroni | XDS Astana Team | 1:13 |
| 7 | Ludovico Crescioli | Team Polti-VisitMalta | 1:15 |
| 8 | Simone Gualdi | Lotto-Intermarché | 2:17 |
| 9 | Warren Barguil | Team Picnic PostNL | 2:19 |
| 10 | Andrea Raccagni Noviero | Soudal Quick-Step | s.t. |
GC after stage 11:
1,843 kilometers raced so far at an average speed of 41.608 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 44hr 17min 41sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 27sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 1:57 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 2:24 |
| 5 | Ben O'Connor | Team Jayco-AlUla | 2:48 |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:06 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 3:28 |
| 8 | Derek Gee-West | Lidl-Trek | 3:34 |
| 9 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 3:36 |
| 10 | Chris Harper | Pinarello-Q36.5 Pro Cycling Team | 4:09 |
Tuesday, May 19: Stage 10, Viareggio - Massa 42 km individual time trial
Complete stage 10 results, stage story, photos, map & profile

Stage winner and Italian time trial champion Filippo Ganna rolls off the start ramp. RCS photo
Results:
42 kilometers raced at an average speed of 54.922 km/hr
| 1 | Filippo Ganna | Netcompany INEOS Cycling Team | 45min 53sec |
| 2 | Thymen Arensman | Netcompany INEOS Cycling Team | @ 1min 54sec |
| 3 | Remi Cavagna | Groupama-FDJ United | 1:59 |
| 4 | Sjoerd Bax | Pinarello-Q36.5 Pro Cycling Team | 2:04 |
| 5 | Derek Gee-West | Lidl-Trek | 2:16 |
| 6 | Max Walscheid | Lidl-Trek | 2:17 |
| 7 | Johan Price-Pejtersen | Alpecin-Premier Tech | 2:29 |
| 8 | Mikkel Bjerg | UAE Team Emirates-XRG | 2:33 |
| 9 | Lorenzo Milesi | Movistar Team | 2:40 |
| 10 | Niklas Larsen | Unibet Rose Rockets | 2:42 |
GC after stage 10:
1,648 kilometers raced so far at an average speed of 41.536 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 39hr 40min 34sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 27sec |
| 3 | Thymen Arensman | Netcompany INEOS Cycling Team | 1:57 |
| 4 | Felix Gall | Decathlon CMA CGM Team | 2:24 |
| 5 | Ben O'Connor | Team Jayco-AlUla | 2:48 |
| 6 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:06 |
| 7 | Michael Storer | Tudor Pro Cycling Team | 3:28 |
| 8 | Derek Gee-West | Lidl-Trek | 3:34 |
| 9 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 3:36 |
| 10 | Markel Beloki | EF Education-EasyPost | 4:16 |
Monday, May 18: Rest Day 2
The Giro d’Italia observes a rest day. The race will resume on Tuesday with the Viareggio–Massa time trial, 42 km.
Sunday, May 17: Stage 9, Cervia - Corno alle Scale, 184 km
Complete stage 9 results, stage story, photos, map & profile

Jonas Vingegaard solos across the finish line to win the stage. La Presse photo
Results:
184 kilometers raced at an average speed of 42.404 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 4hr 20min 21sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 12sec |
| 3 | Davide Piganzoli | Team Visma | Lease a Bike | 0:34 |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | s.t. |
| 5 | Afonso Eulalio | Bahrain Victorious | 0:41 |
| 6 | Derek Gee-West | Lidl-Trek | 0:46 |
| 7 | Mathys Rondel | Tudor Pro Cycling Team | s.t. |
| 8 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 9 | Jai Hindley | Red Bull-BORA-hansgrohe | 0:50 |
GC after stage 9:
1,606 kilometers raced so far at an average speed of 41.361 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 38hr 49min 44sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 2min 24sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 2:59 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 4:32 |
| 5 | Christian Scaroni | XDS Astana Team | 4:43 |
| 6 | Thymen Arensman | Netcompany INEOS Cycling Team | 5:00 |
| 7 | Mathys Rondel | Tudor Pro Cycling Team | 5:01 |
| 8 | Ben O'Connor | Team Jayco-AlUla | 5:03 |
| 9 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 5:15 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 5:20 |
Saturday, May 16: Stage 8, Chieti - Fermo, 156 km
Complete stage 8 results, stage story, photos, map & profile

Jhonatan Narvaez wins stage eight. La Presse photo
Results:
156 kilometers raced at an average speed of 45.123 km/hr
| 1 | Jhonatan Narvaez | UAE Team Emirates-XRG | 3hr 27min 26sec |
| 2 | Andreas Leknessund | Uno-X Mobility | @ 32sec |
| 3 | Martin Tjøtta | Uno-X Mobility | 0:42 |
| 4 | Thomas Silva | XDS Astana Team | 0:44 |
| 5 | Lorenzo Milesi | Movistar Team | s.t. |
| 6 | Christian Scaroni | XDS Astana Team | 0:48 |
| 7 | Corbin Strong | NSN Cycling Team | 0:55 |
| 8 | Juan Pedro Lopez | Movistar Team | s.t. |
| 9 | Wout Poels | Unibet Rose Rockets | 0:58 |
| 10 | Markel Beloki | EF Education-EasyPost | 1:00 |
GC after stage 8:
1,422 kilometers raced so far at an average speed of 41.243 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 34hr 28min 42sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 3min 15sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 3:34 |
| 4 | Christian Scaroni | XDS Astana Team | 4:18 |
| 5 | Jai Hindley | Red Bull-BORA-hansgrohe | 4:23 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:28 |
| 7 | Ben O'Connor | Team Jayco-AlUla | 4:32 |
| 8 | Mathys Rondel | Tudor Pro Cycling Team | 4:56 |
| 9 | Thymen Arensman | Netcompany INEOS Cycling Team | 5:07 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 5:11 |
Friday, May 15: Stage 7, Formia - Blockhaus, 244 km
Stage 7 complete results, stage story, photos, map & profile

Jonas Vingegaard wins stage seven. La Presse photo
Results:
244 kilometers raced at an average speed of 39.648 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 6hr 9min 15sec |
| 2 | Felix Gall | Decathlon CMA CGM Team | @ 13sec |
| 3 | Jai Hindley | Red Bull-BORA-hansgrohe | 1:02 |
| 4 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 1:05 |
| 5 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 6 | Mathys Rondel | Tudor Pro Cycling Team | 1:29 |
| 7 | Giulio Ciccone | Lidl-Trek | 1:40 |
| 8 | Derek Gee-West | Lidl-Trek | 1:42 |
| 9 | Michael Storer | Tudor Pro Cycling Team | 1:44 |
| 10 | Thymen Arensman | Netcompany INEOS Cycling Team | s.t. |
GC after stage 7:
1,266 kilometers raced so far at an average speed of 40.852 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 30hr 59min 23sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 3min 17sec |
| 3 | Felix Gall | Decathlon CMA CGM Team | 3:34 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 4:25 |
| 5 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:28 |
| 6 | Ben O'Connor | Team Jayco-AlUla | 4:32 |
| 7 | Mathys Rondel | Tudor Pro Cycling Team | 4:56 |
| 8 | Giulio Ciccone | Lidl-Trek | 4:57 |
| 9 | Thymen Arensman | Netcompany INEOS Cycling Team | 5:07 |
| 10 | Michael Storer | Tudor Pro Cycling Team | 5:11 |
Thursday, May 14: Stage 6, Paestum - Napoli (Naples), 141 km
Stage 6 complete results, stage story, photos, map & profile

A clearly happy Davide Ballerini wins stage six. Sirotti photo
Results:
141 kilometers raced at an average speed of 42.406 km/hr
| 1 | Davide Ballerini | XDS Astana Team | 3hr 19min 30sec |
| 2 | Jasper Stuyven | Soudal Quick-Step | s.t. |
| 3 | Paul Magnier | Soudal Quick-Step | s.t. |
| 4 | Jensen Plowright | Alpecin-Premier Tech | s.t. |
| 5 | Ben Turner | Netcompany INEOS Cycling Team | s.t. |
| 6 | Alec Segaert | Bahrain Victorious | s.t. |
| 7 | Luca Mozzato | Tudor Pro Cycling Team | s.t. |
| 8 | Filippo Magli | Bardiani-CSF 7 Saber | s.t. |
| 9 | Enrico Zanoncello | Bardiani-CSF 7 Saber | s.t. |
| 10 | Casper van Uden | Team Picnic PostNL | s.t. |
GC after stage 6:
1,022 kilometers raced so far at an average speed of 44.850 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 24hr 47min 13sec |
| 2 | Igor Arrieta | UAE Team Emirates-XRG | @ 2min 51sec |
| 3 | Christian Scaroni | XDS Astana Team | 3:34 |
| 4 | Andrea Raccagni Noviero | Soudal Quick-Step | 3:39 |
| 5 | Johannes Kulset | Uno-X Mobility | 5:17 |
| 6 | Giulio Ciccone | Lidl-Trek | 6:12 |
| 7 | Jan Christen | UAE Team Emirates-XRG | 6:16 |
| 8 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 9 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 10 | Thymen Arensman | Netcompany INEOS Cycling Team | 6:18 |
Wednesday, May 13: Stage 5, Praia a Mare - Potenza, 203 km
Complete stage 5 results, stage story, photos, map & profile

Igor Arrieta wins the stage. Second-place Afonso Eulalio (just behind Arrieta) becomes the new GC leader. RCS photo
Results:
203 kilometers raced at an average speed of 39.565 km/hr
| 1 | Igor Arrieta | UAE Team Emirates-XRG | 5hr 7min 51sec |
| 2 | Afonso Eulalio | Bahrain Victorious | @ 2sec |
| 3 | Thomas Silva | XDS Astana Team | 0:51 |
| 4 | Lorenzo Milesi | Movistar Team | 1:29 |
| 5 | Christian Scaroni | XDS Astana Team | 1:30 |
| 6 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 7 | Koen Bouwman | Team Jayco-AlUla | 3:11 |
| 8 | Johannes Kulset | Uno-X Mobility | 3:13 |
| 9 | Andrea Raccagni Noviero | Soudal Quick-Step | 3:29 |
| 10 | Ludovico Crescioli | Team Polti-VisitMalta | 4:42 |
GC after stage 5:
881 kilometers raced so far at an average speed of 41.049 km/hr
| 1 | Afonso Eulalio | Bahrain Victorious | 21hr 27min 43sec |
| 2 | Igor Arrieta | UAE Team Emirates-XRG | @ 2min 51sec |
| 3 | Christian Scaroni | XDS Astana Team | 3:34 |
| 4 | Andrea Raccagni Noviero | Soudal Quick-Step | 3:39 |
| 5 | Johannes Kulset | Uno-X Mobility | 5:17 |
| 6 | Giulio Ciccone | Lidl-Trek | 6:12 |
| 7 | Jan Christen | UAE Team Emirates-XRG | 6:16 |
| 8 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 9 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 10 | Thymen Arensman | Netcompany INEOS Cycling Team | 6:18 |
Tuesday, May 12: Stage 4, Catanzaro - Cosenza, 138 km
Complete stage 4 results, stage story, photos, map & profile

Jhonatan Narvaez wins stage four. La Presse photo
Results:
138 kilometers raced at an average speed of 43.864 km/hr
| 1 | Jhonatan Narvaez | UAE Team Emirates-XRG | 3hr 8min 46sec |
| 2 | Orluis Aular | Movistar Team | s.t. |
| 3 | Giulio Ciccone | Lidl-Trek | s.t. |
| 4 | Ben Turner | Netcompany INEOS Cycling Team | s.t. |
| 5 | Alessandro Pinarello | NSN Cycling Team | s.t. |
| 6 | Afonso Eulalio | Bahrain Victorious | s.t. |
| 7 | Lennert Van Eetvelt | Lotto-Intermarché | s.t. |
| 8 | Diego Ulissi | XDS Astana Team | s.t. |
| 9 | Andrea Raccagni Noviero | Soudal Quick-Step | s.t. |
| 10 | Michael Valgren | EF Education-EasyPost | s.t. |
GC after stage 4:
681 kilometers raced so far at an average speed of 41.743 km/hr
| 1 | Giulio Ciccone | Lidl-Trek | 16hr 18min 51sec |
| 2 | Jan Christen | UAE Team Emirates-XRG | @ 4sec |
| 3 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 4 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 5 | Thymen Arensman | Netcompany INEOS Cycling Team | 0:06 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 7 | Lennert Van Eetvelt | Lotto-Intermarché | 0:10 |
| 8 | Enric Mas | Movistar Team | s.t. |
| 9 | Markel Beloki | EF Education-EasyPost | s.t. |
| 10 | Jan Hirt | NSN Cycling Team | s.t. |
Monday, May 11: Rest Day 1
The 16th Grande Partenza abroad comes to an end with plenty of positive memories. Tonight and tomorrow, the Giro heads back to Italy. Monday brings the first rest day before racing resumes on Tuesday with Catanzaro–Cosenza, as the Corsa Rosa returns on Italian roads in Calabria.
Sunday, May 10: Stage 3, Plovdiv - Sofia, 175 km
Complete stage 3 results, stage story, photos, map & profile

Paul Magnier wins stage three. Sirotti photo
Results:
175 kilometers raced at an average speed of 42.051 km/hr
| 1 | Paul Magnier | Soudal Quick-Step | 4hr 9min 42sec |
| 2 | Jonathan Milan | Lidl-Trek | s.t. |
| 3 | Dylan Groenewegen | Unibet Rose Rockets | s.t. |
| 4 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 5 | Matteo Malucelli | XDS Astana Team | s.t. |
| 6 | Erlend Blikra | Uno-X Mobility | s.t. |
| 7 | Pascal Ackermann | Team Jayco-AlUla | s.t. |
| 8 | Davide Ballerini | XDS Astana Team | s.t. |
| 9 | Tobias Lund Andresen | Decathlon CMA CGM Team | s.t. |
| 10 | Enrico Zanoncello | Bardiani-CSF 7 Saber | s.t. |
GC after stage 3:
543 kilometers raced so far at an average speed of 41.236 km/hr
| 1 | Thomas Silva | XDS Astana Team | 13hr 10min 5sec |
| 2 | Florian Stork | Tudor Pro Cycling Team | @ 4sec |
| 3 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 0:06 |
| 5 | Giulio Ciccone | Lidl-Trek | s.t. |
| 6 | Jan Christen | UAE Team Emirates-XRG | 0:10 |
| 7 | Martin Tjøtta | Uno-X Mobility | s.t. |
| 8 | Johannes Kulset | Uno-X Mobility | s.t. |
| 9 | Enric Mas | Movistar Team | s.t. |
| 10 | Lennert Van Eetvelt | Lotto-Intermarché | s.t. |
Saturday, May 9: Stage 2, Burgas - Veliko Tarnovo, 221 km
Complete stage 2 results, stage story, photos, map & profile

Thomas Silva wins stage two. Sirotti photo
Results:
221 kilometers raced at an average speed of 39.067 km/hr
| 1 | Thomas Silva | XDS Astana Team | 5hr 39min 25sec |
| 2 | Florian Stork | Tudor Pro Cycling Team | s.t. |
| 3 | Giulio Ciccone | Lidl-Trek | s.t. |
| 4 | Christian Scaroni | XDS Astana Team | s.t. |
| 5 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 6 | Matteo Sobrero | Lidl-Trek | s.t. |
| 7 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 8 | Jan Christen | UAE Team Emirates-XRG | s.t. |
| 9 | Martin Tjøtta | Uno-X Mobility | s.t. |
| 10 | Mathys Rondel | Tudor Pro Cycling Team | s.t. |
GC after stage 2:
368 kilometers raced so far at an average speed of 40.860 km/hr
| 1 | Thomas Silva | XDS Astana Team | 9hr 0min 23sec |
| 2 | Florian Stork | Tudor Pro Cycling Team | @ 4sec |
| 3 | Egan Bernal | Netcompany INEOS Cycling Team | s.t. |
| 4 | Thymen Arensman | Netcompany INEOS Cycling Team | 0:06 |
| 5 | Giulio Ciccone | Lidl-Trek | s.t. |
| 6 | Jan Christen | UAE Team Emirates-XRG | 0:10 |
| 7 | Johannes Kulset | Uno-X Mobility | s.t. |
| 8 | Martin Tjøtta | Uno-X Mobility | s.t. |
| 9 | Lennert Van Eetvelt | Lotto-Intermarché | s.t. |
| 10 | Darren Rafferty | EF Education-EasyPost | s.t. |
Friday, May 8: Stage 1, Nessebar - Burgas, Bulgaria, 147 km
Complete stage 1 results, stage story, photos, map & profile

Paul Magnier wins stage one. Sirotti photo
Results:
147 kilometers raced at an average speed of 43.852 km/hr
| 1 | Paul Magnier | Soudal Quick-Step | 3hr 21min 8sec |
| 2 | Tobias Lund Andresen | Decathlon CMA CGM Team | s.t. |
| 3 | Ethan Vernon | NSN Cycling Team | s.t. |
| 4 | Jonathan Milan | Lidl-Trek | s.t. |
| 5 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 6 | Giovanni Lonardi | Team Polti-VisitMalta | s.t. |
| 7 | Pascal Ackermann | Team Jayco-AlUla | s.t. |
| 8 | Tord Gudmestad | Decathlon CMA CGM Team | s.t. |
| 9 | Max Walscheid | Lidl-Trek | s.t. |
| 10 | Dries van Gestel | Soudal Quick-Step | s.t. |
GC after stage 1:
| 1 | Paul Magnier | Soudal Quick-Step | 3hr 20min 58sec |
| 2 | Tobias Lund Andresen | Decathlon CMA CGM Team | @ 4sec |
| 3 | Manuele Tarozzi | Bardiani-CSF 7 Saber | s.t. |
| 4 | Ethan Vernon | NSN Cycling Team | 0:06 |
| 5 | Diego Sevilla | Team Polti-VisitMalta | s.t. |
| 6 | António Morgado | UAE Team Emirates-XRG | 0:08 |
| 7 | Jonathan Milan | Lidl-Trek | 0:10 |
| 8 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 9 | Giovanni Lonardi | Team Polti-VisitMalta | s.t. |
| 10 | Pascal Ackermann | Team Jayco-AlUla | s.t. |
List of stages, December 1, 2025:
| Stage | Date | Start/Finish | Distance |
| 1 | Fri, 08/05/2026 | Nessebar - Burgas | 156 km |
| 2 | Sat. 09/05/2026 | Burgas - Veliko Tarnovo | 220 km |
| 3 | Sun. 10/05/2026 | Plovdiv – Sofia | 174 km |
| Mon 11/5 | Transfer to Italy | ||
| 4 | Tue. 12/05/2026 | Catanzaro – Cosenza | 144 km |
| 5 | Wed. 13/05/2026 | Praia a Mare – Potenza | 204 km |
| 6 | Thu. 14/05/2026 | Paestum – Napoli | 161 km |
| 7 | Fri. 15/05/2026 | Formia – Blockhaus | 246 km |
| 8 | Sat. 16/05/2026 | Chieti – Fermo | 159 km |
| 9 | Sun. 17/05/2026 | Cervia - Corno alle Scale | 184 km |
| Mon 18/5 | Rest Day | ||
| 10 | Tue. 19/05/2026 | Viareggio – Massa ITT | 40,2 km |
| 11 | Wed. 20/05/2026 | Porcari (Paper District) – Chiavari | 178 km |
| 12 | Thu. 21/05/2026 | Imperia - Novi Ligure | 177 km |
| 13 | Fri. 22/05/2026 | Alessandria – Verbania | 186 km |
| 14 | Sat. 23/05/2026 | Aosta – Pila | 133 km |
| 15 | Sun. 24/05/2026 | Voghera – Milano | 136 km |
| Mon 25/5 | Rest Day | ||
| 16 | Tue. 26/05/2026 | Bellinzona – Carì | 113 km |
| 17 | Wed. 27/05/2026 | Cassano d'Adda – Andalo | 200 km |
| 18 | Thu. 28/05/2026 | Fai della Paganella - Pieve di Soligo | 167 km |
| 19 | Fri. 29/05/2026 | Feltre - Alleghe (Piani di Pezzè) | 151 km |
| 20 | Sat. 30/05/2026 | Gemona del Friuli 1976-2026 – Piancavallo | 199 km |
| 21 | Sun. 31/05/2026 | Roma – Roma | 131 km |
| Total distance: | 3,459.2 km | ||
| Average stage: | 164.7 km |
Organizer's summary of the 2026 route:
Grande Partenza Bulgaria
Three stages with several pitfalls, especially the second, will serve as the appetizer for the Corsa Rosa in Bulgaria. The first stage starts and finishes on the Black Sea coast, from Nessebar to Burgas, and will award the first Maglia Rosa. The race then sets off from Burgas to reach Veliko Tarnovo after a demanding 220 km, featuring a final climb of 3.5 km at 7.5%. The final stage in Bulgaria will finish in the capital Sofia, once again favouring the sprinters, starting from Plovdiv.
First Week
After the first rest day on Monday 11 May, the return to Italy is followed by stages that may suit the sprinters, though not necessarily for a full bunch finish, alternating with mountain stages. The race heads north up the peninsula, with the first summit finish at Blockhaus via its most feared side (Roccamorice). The week ends with the “Muri” stage to Fermo and the Apennine summit finish at Corno alle Scale, which returns 22 years after Gilberto Simoni’s victory in 2004.
Second Week
Second rest day on Monday 18 May. Racing resumes with a 40.2 km individual time trial entirely in Tuscany, from Viareggio to Massa – the Tappa Bartali of this edition. Three more stages follow, alternating demanding finales with bunch sprints, in preparation for the weekend in the Aosta Valley, where the peloton heads to Pila (back for the first time in over 30 years) with a brutal 133 km stage featuring more than 4,400 m of elevation gain. Sunday is expected to be a sprint finish in Milan, which will host the 90th stage finish in its history.
Third Week
The third week begins with a bang thanks to the very short but extremely intense stage held entirely in Switzerland, from Bellinzona to Carì. Two mixed stages serve as a warm-up for the final two very tough days. The Dolomite queen stage links Feltre with Piani di Pezzè (another historic return, after Marco Pantani’s victory at the 1992 Giro d’Italia for amateurs). The route tackles the Duran, Staulanza (with the Coi variant), Giau (Cima Coppi) and Falzarego passes, retracing some of the Giro’s most iconic roads. The following day, the Corsa Rosa commemorates the devastating Friuli earthquake (6 May 1976), passing through the affected area before climbing Piancavallo twice, which will decide the final general classification. Grande Arrivo in Rome with the traditional parade circuit through the Eternal City.
Numbers & Facts
3.459 km total distance
50.000 m elevation gain
16th foreign Grande Partenza in Giro history
8th Grande Arrivo in Rome
40.2 km of individual time trialling
90 stage finishes in Milan
Passo Giau as Cima Coppi for the 4th time (after 1973 – José Manuel Fuente; 2011 – Stefano Garzelli; 2021 – Egan Bernal)