
Friday, May 29: Stage 19, Feltre - Alleghe (Piani di Pizzè), 151 km
Stage 19 map & profile | Stage 19 photos

Sepp Kuss wins stage 19.
Les Woodland's book Cycling’s 50 Craziest Stories 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 Alleghe at 2:40 PM, local time: 23C (74F), partly cloudy, with the wind from the southeast at 8 km/hr (5 mph). There is a 13% chance of rain.
The stage: This is a major Dolomite mountain stage consisting almost exclusively of climbs and descents. After a short approach section, the final 100 km contain the entire elevation gain of approximately 5000 metres. Riders tackle, in continuous succession and without any real recovery sections: Passo Duran (max 14%), Coi (max 19%), Forcella Staulanza (max 10%), Passo Giau (Cima Coppi, max 14%), Passo Falzarego (max 10%), and finally the last 5 km leading to the finish at Piani di Pezzè.
Final kilometers:
The final 5 km average around 10%, with the central section reaching gradients of up to 15%. The climb is on a narrow and winding mountain road, featuring 8 hairpins and numerous connecting bends. The final kilometer remains consistently around 11%. The finishing straight is 300 m long on 7 m wide asphalt.
The race: Michael Valgren & James Shaw did not start. With two monster mountain stages next in the Giro, their EF Education-EasyPost team wanted to save them for future racing. After getting dropped, early in the stage Jhonatan Narvaez (UAE Team Emirates-XRG) abandoned the race.
Here's the report from stage winner Sepp Kuss' Team Visma | Lease a Bike:
Sepp Kuss delivered an impressive performance to win the nineteenth stage of the Giro d’Italia. After a grueling battle, the 31-year-old American proved to be the strongest rider in the breakaway and crossed the finish line solo. Jonas Vingegaard finished fifth and remains firmly in the pink jersey.

Time to go racing in the high mountains. Stage 19 gets started. RCS photo.
“I still can’t believe I won this stage,” Kuss said afterward. With this victory, the American completed his trilogy: Kuss has now won a stage in all three Grand Tours. “It’s something I’ve dreamed about for a long time, but I also knew it would be difficult to achieve. Every year the level gets higher, so I knew I wouldn’t have many chances left to win a stage in the Giro. Today, everything finally came together. This is special.”
The queen stage covered 150 kilometers and featured no fewer than six categorized climbs along the route. After the start in Feltre, a battle for a place in the early breakaway began immediately. Eventually, a large lead group, including Kuss, managed to break away from the peloton. The breakaway worked well together and survived the demanding climbs of the Passo Duran and Passo Giau. In the group of favorites, Team Visma | Lease a Bike controlled the pace in support of leader Vingegaard.

Racing in the high mountains. Photo: MirrorMedia|LaPresse
On the Passo Falzarego, the penultimate climb of the day, Giulio Ciccone attacked. The Italian quickly built a comfortable lead of more than a minute. At the foot of the final climb to Piani di Pezze, Kuss set the pace in the chasing group. The American underlined his strong form by accelerating in pursuit of Ciccone.

The day's break on the Passo Giau.
In the closing kilometers, Kuss caught and passed the Italian. The 31-year-old American from Team Visma | Lease a Bike then soloed to his first-ever stage victory in the Giro d’Italia. He previously won a stage in the Tour de France in 2021, and claimed stage victories in the Vuelta a España in both 2019 and 2023.
Behind him, Vingegaard responded attentively to an attack from Felix Gall. The Dane finished fifth. Davide Piganzoli crossed the line in eighth place and gained time in the battle for the white jersey. Kuss’s triumph marked Team Visma | Lease a Bike’s fifth stage victory of this Giro.

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

Stage 19 map

Stage 19 profile
Stage 19 photos by Fotoreporter Sirotti:

Team Red Bull-BORA-hansgrohe boss Ralph Denk at the start.

Two retired cyclists at the start. On the left is Roberto Amadio (also former manager of the Liquigas Team), & Peter Sagan (3-times world road champion, Paris-Roubaix, Tour of Flanders, Gent-Wevelgem, etc, etc, etc winner)

Before the stage Jonas Vingegaard signs autographs.

GC leader Jonas Vingegaard before the stage start.

Riders on the day's first big climb, the Passo Duran

GC leader Jonas Vingegaard on the Passo Duran

Jasper Stuyven & Filippo Ganna on the Duran climb.

Derek Gee-West climbs to the finish at Piani de Pezzè

Not far behind Derek Gee-West, Jonas Vingegaard climbs to the finish.

Sepp Kuss has left everyone else behind.

Sepp Kuss wins stage 19.

Thirteen seconds later Derek Gee-West finishes second.

Felix Gall was fourth. Jonas Vingegaard's pink jersey can be seen just behind him.

GC leader Jonas Vingegaard was fifth across the line.

Jai Hindley was sixth.

Stage winner Sepp Kuss

Jonas Vingegaard will start stage 20 in pink. He is shaking hands with Vincenzo Nibali, Giro winner in 2013 & 2016, Tour de France winner in 2014, & Vuelta a España winner in 2010.