
Saturday, May 30: Stage 20, Gemona del Friuli 1976-2026 – Piancavallo, 200 km
Stage 20 map & profile | Stage 20 photos

Jonas Vingegaard has left his nearest chaser more than a minute behind to win the stage. RCS photo
Les Woodland's book Sticky Buns Across America: Back-roads biking from sea to shining sea is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the finish city of Piancavallo at 2:35 PM, local time: 21C (69F), partly cloudy, with the wind from the south at 11 km/hr (7 mph). There is a 12% chance of rain.
The stage: The stage opens with a rolling section across the Tagliamento plain around Gemona. Notable features include the short climb of Forgaria nel Friuli and the KOM at Clauzetto, which leads into the Val Cosa. From there, the race reaches Maniago and then enters, at Montereale Valcellina, a final circuit of approximately 53 km featuring a double ascent of Piancavallo. In the first part, the roads are quite winding but always wide and well surfaced. After the first ascent, riders descend towards Lake Barcis on a fairly demanding descent, followed by a tunnel of over 4 km in slight descent, fully lit and with excellent road surface. The route then becomes flat until Aviano, where the final climb begins.
Final kilometers:
The final 15 km are entirely uphill. The first 10 km are very steep, consistently around 9% with peaks of 14%. At km 10.9 the road levels off and even descends slightly before climbing again (passing through an avalanche gallery) with more moderate gradients (max 8%). The final kilometer is quite technical and still slightly uphill. The finish is on a wide sweeping bend at 1.5% over 100 m, on 7.5 m wide asphalt.
The start city:
Nestled at the foot of the Julian Alps, Gemona del Friuli is one of the most historically significant towns in Friuli and has long served as a gateway between the plain and the Alpine passes. Its town centre preserves a highly valuable architectural heritage, dominated by the Cathedral of Santa Maria Assunta and a compact medieval urban layout. The city’s recent history is marked by the 1976 earthquake, which struck Gemona with devastating force and whose 50th anniversary will be commemorated in 2026.
The race: The official start was given at 11:16 AM and attacks flew off from the flag drop.
Here's the race report from stage winner & GC leader Jonas Vingegaard's Team Vimsa | Lease a Bike:
Jonas Vingegaard put the finishing touches on his dominance in the penultimate stage of the Giro d’Italia. The 29-year-old Dane once again asserted his authority in the mountains in impressive fashion, claiming his fifth stage victory. Vingegaard and Team Visma | Lease a Bike now stand on the brink of a historic overall victory in the Giro.
“I had a fantastic day,” Vingegaard said afterward. “It’s special to have five stage wins in this Giro. The goal was to win at least one stage while wearing the pink jersey, but this is even better than I could have imagined. Today, I was also wearing a pink jersey featuring a tribute to the victims of the 1976 earthquake in this region. That makes this victory even more special.”
The final mountain stage of the Giro started in Gemona del Friuli. The riders faced a 200-kilometer route, featuring a double ascent of Piancavallo in the finale. From the very beginning, the riders of Team Visma | Lease a Bike took control of the peloton and set out in pursuit of the early breakaway riders.

The peloton 24 kilometers into the stage. RCS photo
The race truly came to life on the final climb. With 10 kilometers remaining, Vingegaard launched his attack. The overall leader quickly dropped all of his rivals. Not long afterward, Vingegaard also passed the last remaining breakaway riders. The Dane then soloed to his fifth stage victory of this Giro d’Italia. For Team Visma | Lease a Bike, it was already their sixth stage win, just one day after Sepp Kuss’s victory.

Jonas Vingegaard and his Visma | Lease a Bike team lead the peloton up the Piancavallo's first ascent with three riders 1min 25sec up the road.
“The guys did an incredible job today. I had to make my move early on the climb. I attacked sooner than planned, but fortunately I had the legs to finish it off. The team has given everything over the past three weeks, so this victory is absolutely for them. Tomorrow, we’ll enjoy our celebratory day in Rome.”

Bam! On the second & final ascent of the Piancavallo climb Jonas Vingegaard drops Felix Gall and heads for the finish.
On Sunday, the Italian capital Rome will host the final stage of the 109th Giro. Barring any mishaps, Vingegaard will secure the first overall Giro victory of his career. In doing so, the Dane will complete his Grand Tour trilogy. He has already won the 2022 & 2023 Tours de France and the 2025 Vuelta a España.

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

Stage 20 map

Stage 20 profile
Stage 20 photos by Fotoreporter Sirotti:

Jonas Vingegaard at the start. The sign is a reminder of the terrible 1976 earthquake that devastated the start town of Gemona del Friuli.

Rider presentation ceremony: Davide Piganzoli & Joans Vingegaard.

The peloton gets rolling in the start town of Gemona Del Friuli.

A group descends from Piancavallo.

The peloton descends the Piancavallo

Jonas Vingegaard wins stage twenty.

Felix Gall finishes second & Jai Hindley is third.

Derek Gee-West finishes fourth.

Best Young Rider Afonso Eulalio was seventh.

Egan Bernal was sixth across the line.

King of the Moutains Giulio Ciccone finishes

Just after the stage finish, Damiano Caruso & Afonso Eulalio.

Jonas Vingegaard will start the 21st & final stage in pink.