
Saturday, May 23: Stage 14: Aosta - Pila (Gressan), 133 km
Stage 14 map & profile | Stage 14 photos

Jonas Vingegaard has left his nearest chaser nearly a minute behind. He'll be wearing pink at the start of stage 15. Photo: LaPresse
Les Woodland's book The Olympics' 50 Craziest Stories: A Five Ring Circus 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 Pila at 2:35 PM, local time: 27C (80F), fair, with the wind from the east-southeast at 13 km/hr (8 mph). There is just a 1% chance of rain.
The stage: This is a major Alpine mountain stage made up of a continuous sequence of climbs and descents, with virtually no recovery sections in between. Right from the start, the route climbs the long ascent to Saint-Barthélémy, followed by a wide and fast descent of almost 20 km. After a short approach section towards Aosta, the road climbs again through the Valpelline, culminating at Doues, the least demanding climb of the day. After descending again near Aosta, riders tackle the climbs of Lin Noi and Verrogne, separated by a very short descent, and then, back in the valley, the final climb to Pila (Gressan side).
Final kilometers:
The final kilometers are all uphill at around 9%, with gradients reaching about 11% at 3 km from the finish. Final straight of 100 m, still uphill, on 7 m wide asphalt.
The race: Early on Christian Scaroni (XDS Astana) abandoned. He had been running a fever during the night but nonetheless tried to ride the stage.
Here's the report from stage winner & new GC leader Jonas Vingegaard's Team Visma | Lease a Bike:
Jonas Vingegaard claimed an impressive victory in stage fourteen of the Giro d’Italia. After a strong team performance, the Dane soloed to victory in Pila. With the win, Vingegaard also takes over the overall lead from Afonso Eulálio.
“This is one of the victories I will remember for a long time,” Vingegaard reflected afterwards. “I didn’t have a specific plan about when I wanted to attack, but I knew the final part of the climb was steeper. That’s where I really wanted to try and make the difference. I felt strong today and it’s great to start tomorrow in the pink jersey.”
In the fourteenth stage of the Giro d’Italia, the Dutch team immediately showed itself at the front of the race. In the short but extremely demanding stage, Team Visma | Lease a Bike set a high pace early on in support of team leader Vingegaard, preventing the early breakaway from playing a major role in the battle for the stage win.

Stage 14 gets its official start.
Approaching the final climb, strong teamwork saw the pace increase significantly. Vingegaard received the perfect lead-out on the decisive climb of the day, after which the Dane launched his attack and delivered a powerful ride on the ascent to Pila. The 29-year-old rider eventually soloed to victory and also claimed the pink jersey.

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

Stage 14 map

Stage 14 profile
Stage 14 photos by Fotoreporter Sirotti:

Jonathan Milan heads to the start.

The peloton on the day's first climb, the first-category Saint Barthelemy.

Another shot of the peloton on the Saint Berthelemy.

Jonas Vingegaard on the Saint Barthelemy climb escorted by his Visma | Lease a Bike teammates.

GC leader Afonso Eulalio. He'll give up the Maglia Rosa at the end of the stage.

Team Visma | Lease a Bike taking the point on the Doues, the day's second climb.

Jonas Vingegaard completes a perfectly executed stage that will end up putting him in the pink jersey.

Second-place Felix Gall came in 49 seconds later.

Jai Hindley was third.

Davide Piganzoli was fifth.

Giulio Pellizzari was fifth, making him sixth in the GC.

Thymen Arensman finishes sixth, making him fourth in the GC.

Jan Hirt and Egan Bernal finish ninth & tenth.

Afonso Eulalio finishes fifteenth, at 2min 49sec

And here's the man who got Eulalio's pink jersey, a clearly happy Jonas Vongegaard.