
Sunday, July 20: Stage 15, Muret - Carcassonne, 169.3 km
Stage 15 map & profile | Stage 15 photos

Tim Wellens solos across the finish line for his first Tour de France stage win. ASO photo
Bill & Carol McGann’s book The Story of the 2023 Tour de France, 2023: The Viking Again Conquers the Tour is available in both Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Rated ascents:
Weather at the finish city of Caracassonne at 2:15 PM, local time: 32C (89F), fair, with the wind from the west at 9 km/hr (5 mph). There is just a 1% chance of rain.
The stage: Tour boss Christian Prudhomme writes: The road to Carcassonne often favors the sprinters, but 2,400 metres of vertical gain in less than 170 kilometres could encourage the breakaway specialists. The Côte de Saint-Ferréol on the road out of Revel and then the Pas du Sant (2.9km at 10%) could well provide them with the perfect opportunity to eliminate their rivals. After that, there’s 40 kilometres of gentle descent into the medieval city, with the possibility of a strong crosswind too!
The race: "Lennert Van Eetvelt will not start Stage 15 and will therefore withdraw from the Tour de France", Lotto announced at midday. "Following his crash at the National Championships and a subsequent incident during Stage 2 of this Tour, the physical toll has proven too high for him to continue. Lennert will now focus fully on his recovery and take the necessary time to prepare for his upcoming goals. We wish him a smooth and full recovery."
166 riders began stage 15 at 1:28 PM.
Here's the race organizer's stage 15 summary:
After three gruelling days in the Pyrenees, it was the baroudeurs’ [French for fighter or adventurer, in cycling meaning a breakaway specialist] turn to shine at the end of the second week of the Tour de France 2025. Usually tasked with protecting Tadej Pogacar, Tim Wellens (UAE Team Emirates-XRG) made the most of this opportunity to participate in a festival of attacks, while his leader safely navigated the bunch. More than 30 riders managed to break away en route to Carcassonne. Wellens left them all in his wake with 43.5 km to go, claiming his first victory in the Tour de France.
Already a winner at La Vuelta and the Giro, he becomes the 113th rider with stage wins in all three Grand Tours, just a couple of months after Wout van Aert was the 112th. Wellens also succeeds Van Aert as a Belgian national champion claiming victory in the Tour (Van Aert had done so in 2021). Behind him, Victor Campenaerts (Visma-Lease a Bike) and Julian Alaphilippe (Tudor) complete the top 3 of the stage, ahead of Van Aert. The peloton crossed the line with a gap of 6 minutes.
The race:
The last effort before the last rest day! After three days in the Pyrenees, the peloton head out to Carcassonne with a hilly course that could favour attackers. Lennert van Eetvelt (Lotto) won’t take part in the battle as he withdraws ahead of the start. The Belgian climber was for from the best version of himself after a crash early in the Tour.
Early scare for Vingegaard and Lipowitz
As soon as the flag drops, Mauro Schmid (Jayco AlUla) and Jonas Abrahamsen (Uno-X Mobility) attack with the hopes to repeat their stunning assault on Toulouse (stage 11). But there are dozens of contenders for breakaway, which leads to a furious battle marked by a crash in the bunch at km 17.
Jonas Vingegaard (Visma-Lease a Bike) and Florian Lipowitz (Red Bull-Bora-Hansgrohe) are among the many riders affected. They lead a strong chase but at the front, attacks keep flying, which prevents them from getting back to the bunch until km 38.
MVDP initiates the break
In the meantime, Mathieu Van der Poel (Alpecin-Deceuninck) attacks at km 27. He is followed by Victor Campenaerts (Visma-Lease a Bike), Neilson Powless (EF Education-EasyPost), Matej Mohoric (Bahrain Victorious), Clément Russo (Groupama-FDJ), Kaden Groves (Alpecin-Deceuninck), Matteo Vercher (Total Energies), Alexey Lutsenko (Israel Premier Tech) and Jarrad Drizners (Lotto).
Tim Wellens (UAE Team Emirates-XRG), Wout van Aert (Visma-Lease a Bike), Pascal Eenkhoorn (Soudal Quick-Step), Tobias Lund Andresen (Picnic PostNL), Jake Stewart (Israel Premier Tech) and Arnaud De Lie (Lotto) make it 15 riders in the lead at km 34… And the battle goes on, as Ineos Grenadiers want to have someone at the front!
The battle goes on and on
The configuration changes slightly on the Côte de Saint-Ferréol (km 72.8), where Jasper Stuyven, Quinn Simmons (Lidl-Trek) and Michael Storer (Tudor) join the breakaway.
Onto the Sorèze climb (km 86.6), a breakaway within the breakaway emerges with Campenaerts, Wellens, Mohoric, Lutsenko, Powless, Simmons and Storer. Behind them, a huge chasing group forms with 28 riders (including Alaphilippe, Van Aert and Van der Poel, among others).
Among the chasers, Carlos Rodriguez (Ineos Grenadiers) manages to join the front group at km 86. Andreas Leknessund (Uno-X) emulates him at km 110, and then it’s Alexandr Vlasov (Red Bull-Bora-Hansgrohe) and Warren Barguil (Picnic PostNL) at km 113.

43 kms to go: Tim Wellens attacks from the break. He has made an attack like this work before. He won the Belgian Championships after a 42-km solo ride.
Wellens flies away
Storer destroys this group by attacking on the first slopes of the Pas du Sant (km 114). He is followed by Simmons, and then Wellens and Campenaerts. The four attackers reach the summit together. After the climb, they are joined by Vlasov, Lutsenko, Barguil and Rodriguez with 44 kilometres to go.

Stage 15 ended at the incredible walled city of Carcassonne.
Right after the junction, Wellens attacks. His rival scan’t follow the Belgian, who opens a gap of more than a minute en route to Carcassonne. Behind him, the chase groups get back together. Campenaerts attacks inside the last 2 kilometres to take the 2nd place ahead of Julian Alaphilippe (Tudor).
Complete results:
169.3 kilometers raced at an average speed of 47.434 km/hr
| 1 | Tim Wellens | UAE Team Emirates-XRG | 3hr 34min 9sec |
| 2 | Victor Campenaerts | Team Visma | Lease a Bike | @ 1min 28sec |
| 3 | Julian Alaphilippe | Tudor Pro Cycling Team | 1:36 |
| 4 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 5 | Axel Laurance | INEOS Grenadiers | s.t. |
| 6 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 7 | Jasper Stuyven | Lidl-Trek | s.t. |
| 8 | Jordan Jegat | Team TotalEnergies | s.t. |
| 9 | Michael Valgren | EF Education-EasyPost | s.t. |
| 10 | Valentin Madouas | Groupama-FDJ | s.t. |
| 11 | Harold Tejada | XDS Astana Team | s.t. |
| 12 | Thibau Nys | Lidl-Trek | s.t. |
| 13 | Pascal Eenkhoorn | Soudal Quick-Step | s.t. |
| 14 | Iván Romeo | Movistar Team | s.t. |
| 15 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 16 | Neilson Powless | EF Education-EasyPost | s.t. |
| 17 | Warren Barguil | Team Picnic PostNL | s.t. |
| 18 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 19 | Carlos Rodriguez | INEOS Grenadiers | s.t. |
| 20 | Guillaume Martin-Guyonnet | Groupama-FDJ | s.t. |
| 21 | Quinn Simmons | Lidl-Trek | s.t. |
| 22 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 23 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 24 | Alexey Lutsenko | Israel-Premier Tech | s.t. |
| 25 | Xandro Meurisse | Alpecin-Deceuninck | 6:01 |
| 26 | Frank van den Broek | Team Picnic PostNL | s.t. |
| 27 | Ben Healy | EF Education-EasyPost | 6:07 |
| 28 | Pavel Sivakov | UAE Team Emirates-XRG | s.t. |
| 29 | Damien Touzé | Cofidis | s.t. |
| 30 | Jonas Abrahamsen | Uno-X Mobility | s.t. |
| 31 | Nils Politt | UAE Team Emirates-XRG | s.t. |
| 32 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 33 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 34 | Jhonatan Narvaez | UAE Team Emirates-XRG | s.t. |
| 35 | Mathis Le Berre | Arkea-B&B Hotels | s.t. |
| 36 | Magnus Cort | Uno-X Mobility | s.t. |
| 37 | Tobias Halland Johannessen | Uno-X Mobility | s.t. |
| 38 | Markus Hoelgaard | Uno-X Mobility | s.t. |
| 39 | Edoardo Affini | Team Visma | Lease a Bike | s.t. |
| 40 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 41 | Cristian Rodriguez | Arkea-B&B Hotels | s.t. |
| 42 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 43 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 44 | Danny van Poppel | Red Bull-BORA-hansgrohe | s.t. |
| 45 | Laurence Pithie | Red Bull-BORA-hansgrohe | s.t. |
| 46 | Florian Lipowitz | Red Bull-BORA-hansgrohe | s.t. |
| 47 | Kévin Vauquelin | Arkea-B&B Hotels | s.t. |
| 48 | Fred Wright | Bahrain Victorious | s.t. |
| 49 | Primoz Roglic | Red Bull-BORA-hansgrohe | s.t. |
| 50 | Clément Venturini | Arkea-B&B Hotels | s.t. |
| 51 | Gianni Vermeersch | Alpecin-Deceuninck | s.t. |
| 52 | Niklas Märkl | Team Picnic PostNL | s.t. |
| 53 | Raúl García | Arkea-B&B Hotels | s.t. |
| 54 | Jonas Rickaert | Alpecin-Deceuninck | s.t. |
| 55 | Oscar Onley | Team Picnic PostNL | s.t. |
| 56 | Tim Naberman | Team Picnic PostNL | s.t. |
| 57 | Toms Skujins | Lidl-Trek | s.t. |
| 58 | Tobias Lund Andresen | Team Picnic PostNL | s.t. |
| 59 | Mike Teunissen | XDS Astana Team | s.t. |
| 60 | Cyril Barthe | Groupama-FDJ | s.t. |
| 61 | Thomas Gachignard | Team TotalEnergies | s.t. |
| 62 | Mathieu van der Poel | Alpecin-Deceuninck | s.t. |
| 63 | Oliver Naesen | Decathlon AG2R La Mondiale | s.t. |
| 64 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 65 | Sergio Higuita | XDS Astana Team | s.t. |
| 66 | Marius Mayrhofer | Tudor Pro Cycling Team | s.t. |
| 67 | Romain Grégoire | Groupama-FDJ | s.t. |
| 68 | Marco Haller | Tudor Pro Cycling Team | s.t. |
| 69 | Alberto Dainese | Tudor Pro Cycling Team | s.t. |
| 70 | Ion Izagirre | Cofidis | s.t. |
| 71 | Alexandre Delettre | Team TotalEnergies | s.t. |
| 72 | Max Schachmann | Soudal Quick-Step | s.t. |
| 73 | Gregor Mühlberger | Movistar Team | s.t. |
| 74 | Paul Penhoët | Groupama-FDJ | s.t. |
| 75 | Clément Russo | Groupama-FDJ | s.t. |
| 76 | Emanuel Buchmann | Cofidis | s.t. |
| 77 | Quentin Pacher | Groupama-FDJ | s.t. |
| 78 | Mattéo Vercher | Team TotalEnergies | s.t. |
| 79 | Thymen Arensman | INEOS Grenadiers | s.t. |
| 80 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | s.t. |
| 81 | Matis Louvel | Israel-Premier Tech | s.t. |
| 82 | Michael Woods | Israel-Premier Tech | s.t. |
| 83 | Joe Blackmore | Israel-Premier Tech | s.t. |
| 84 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 85 | Krists Neilands | Israel-Premier Tech | s.t. |
| 86 | Mathieu Burgaudeau | Team TotalEnergies | s.t. |
| 87 | Callum Scotson | Decathlon AG2R La Mondiale | 6:32 |
| 88 | Emiel Verstrynge | Alpecin-Deceuninck | s.t. |
| 89 | Ilan Van Wilder | Soudal Quick-Step | 6:40 |
| 90 | Kasper Asgreen | EF Education-EasyPost | s.t. |
| 91 | Harry Sweeny | EF Education-EasyPost | 6:50 |
| 92 | Jake Stewart | Israel-Premier Tech | 6:58 |
| 93 | Vincenzo Albanese | EF Education-EasyPost | 7:04 |
| 94 | Geraint Thomas | INEOS Grenadiers | 7:10 |
| 95 | Bruno Armirail | Decathlon AG2R La Mondiale | s.t. |
| 96 | Clément Berthet | Decathlon AG2R La Mondiale | 8:23 |
| 97 | Enric Mas | Movistar Team | 8:30 |
| 98 | Brent Van Moer | Lotto | 8:36 |
| 99 | Matej Mohoric | Bahrain Victorious | 8:57 |
| 100 | Anthony Turgis | Team TotalEnergies | 18:46 |
| 101 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 102 | Lucas Plapp | Team Jayco-AlUla | s.t. |
| 103 | Matteo Trentin | Tudor Pro Cycling Team | s.t. |
| 104 | Connor Swift | INEOS Grenadiers | s.t. |
| 105 | Luke Durbridge | Team Jayco-AlUla | s.t. |
| 106 | Jarrad Drizners | Lotto | s.t. |
| 107 | Sébastien Grignard | Lotto | s.t. |
| 108 | Arnaud De Lie | Lotto | 19:15 |
| 109 | Yevgeniy Fedorov | XDS Astana Team | 22:42 |
| 110 | Laurenz Rex | Intermarché-Wanty | s.t. |
| 111 | Iván García Cortina | Movistar Team | s.t. |
| 112 | Davide Ballerini | XDS Astana Team | s.t. |
| 113 | Jonas Rutsch | Intermarché-Wanty | s.t. |
| 114 | Silvan Dillier | Alpecin-Deceuninck | s.t. |
| 115 | Elmar Reinders | Team Jayco-AlUla | s.t. |
| 116 | Simone Velasco | XDS Astana Team | s.t. |
| 117 | Kamil Gradek | Bahrain Victorious | s.t. |
| 118 | Robert Stannard | Bahrain Victorious | s.t. |
| 119 | Jonathan Milan | Lidl-Trek | s.t. |
| 120 | Pavel Bittner | Team Picnic PostNL | s.t. |
| 121 | Fabian Lienhard | Tudor Pro Cycling Team | s.t. |
| 122 | Guillaume Boivin | Israel-Premier Tech | s.t. |
| 123 | Mauro Schmid | Team Jayco-AlUla | s.t. |
| 124 | Bastien Tronchon | Decathlon AG2R La Mondiale | s.t. |
| 125 | Valentin Paret-Peintre | Soudal Quick-Step | s.t. |
| 126 | Mick van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 127 | Eduardo Sepulveda | Lotto | s.t. |
| 128 | Bert Van Lerberghe | Soudal Quick-Step | s.t. |
| 129 | Nelson Oliveira | Movistar Team | s.t. |
| 130 | Sean Flynn | Team Picnic PostNL | s.t. |
| 131 | Alexis Renard | Cofidis | s.t. |
| 132 | Tiesj Benoot | Team Visma | Lease a Bike | s.t. |
| 133 | Edward Theuns | Lidl-Trek | s.t. |
| 134 | Alex Baudin | EF Education-EasyPost | s.t. |
| 135 | Alex Aranburu | Cofidis | s.t. |
| 136 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 137 | Phil Bauhaus | Bahrain Victorious | s.t. |
| 138 | Dylan Teuns | Cofidis | s.t. |
| 139 | Sam Watson | INEOS Grenadiers | s.t. |
| 140 | Jordi Meeus | Red Bull-BORA-hansgrohe | s.t. |
| 141 | Lewis Askey | Groupama-FDJ | s.t. |
| 142 | Pablo Castrillo | Movistar Team | s.t. |
| 143 | Tim Merlier | Soudal Quick-Step | s.t. |
| 144 | Adam Yates | UAE Team Emirates-XRG | s.t. |
| 145 | Einer Rubio | Movistar Team | s.t. |
| 146 | Ewen Costiou | Arkea-B&B Hotels | s.t. |
| 147 | Luka Mezgec | Team Jayco-AlUla | s.t. |
| 148 | Louis Barré | Intermarché-Wanty | s.t. |
| 149 | Simon Yates | Team Visma | Lease a Bike | s.t. |
| 150 | Hugo Page | Intermarché-Wanty | s.t. |
| 151 | Jenno Berckmoes | Lotto | s.t. |
| 152 | Marc Hirschi | Tudor Pro Cycling Team | s.t. |
| 153 | Clément Champoussin | XDS Astana Team | s.t. |
| 154 | Amaury Capiot | Arkea-B&B Hotels | s.t. |
| 155 | Arnaud Démare | Arkea-B&B Hotels | s.t. |
| 156 | Roel van Sintmaartensdijk | Intermarché-Wanty | s.t. |
| 157 | Dylan Groenewegen | Team Jayco-AlUla | s.t. |
| 158 | Anders Halland Johannessen | Uno-X Mobility | s.t. |
| 159 | Stian Fredheim | Uno-X Mobility | s.t. |
| 160 | Lenny Martinez | Bahrain Victorious | s.t. |
| 161 | William Barta | Movistar Team | s.t. |
| 162 | Vito Braet | Intermarché-Wanty | s.t. |
| 163 | Pascal Ackermann | Israel-Premier Tech | s.t. |
| 164 | Tobias Foss | INEOS Grenadiers | s.t. |
| 165 | Benjamin Thomas | Cofidis | s.t. |
| 166 | Simone Consonni | Lidl-Trek | s.t. |
GC after stage 15:
2,385.8 kilometers raced so far at an average speed of 43.901 km/hr
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 54hr 20min 44sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 13sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 7:53 |
| 4 | Oscar Onley | Team Picnic PostNL | 9:18 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 10:21 |
| 6 | Primoz Roglic | Red Bull-BORA-hansgrohe | 10:34 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 12:00 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 12:33 |
| 9 | Carlos Rodriguez | INEOS Grenadiers | 18:26 |
| 10 | Ben Healy | EF Education-EasyPost | 18:41 |
| 11 | Jordan Jegat | Team TotalEnergies | 19:47 |
| 12 | Ben O'Connor | Team Jayco-AlUla | 25:44 |
| 13 | Guillaume Martin-Guyonnet | Groupama-FDJ | 27:03 |
| 14 | Jhonatan Narvaez | UAE Team Emirates-XRG | 31:55 |
| 15 | Matteo Jorgenson | Team Visma | Lease a Bike | 32:09 |
| 16 | Thymen Arensman | INEOS Grenadiers | 42:56 |
| 17 | Sepp Kuss | Team Visma | Lease a Bike | 43:30 |
| 18 | Cristian Rodriguez | Arkea-B&B Hotels | 47:29 |
| 19 | Sergio Higuita | XDS Astana Team | 51:55 |
| 20 | Enric Mas | Movistar Team | 53:34 |
| 21 | Valentin Madouas | Groupama-FDJ | 55:16 |
| 22 | Warren Barguil | Team Picnic PostNL | 1:00:01 |
| 23 | Simon Yates | Team Visma | Lease a Bike | 1:02:24 |
| 24 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | 1:08:21 |
| 25 | Gregor Mühlberger | Movistar Team | 1:10:19 |
| 26 | Callum Scotson | Decathlon AG2R La Mondiale | 1:11:11 |
| 27 | Romain Grégoire | Groupama-FDJ | 1:11:22 |
| 28 | Adam Yates | UAE Team Emirates-XRG | 1:11:39 |
| 29 | Emanuel Buchmann | Cofidis | 1:11:52 |
| 30 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 1:14:06 |
| 31 | Xandro Meurisse | Alpecin-Deceuninck | 1:16:29 |
| 32 | Clément Berthet | Decathlon AG2R La Mondiale | 1:24:04 |
| 33 | Ilan Van Wilder | Soudal Quick-Step | 1:25:56 |
| 34 | Victor Campenaerts | Team Visma | Lease a Bike | 1:27:14 |
| 35 | Harold Tejada | XDS Astana Team | 1:28:08 |
| 36 | Raúl García | Arkea-B&B Hotels | 1:28:56 |
| 37 | Joe Blackmore | Israel-Premier Tech | 1:29:45 |
| 38 | Harry Sweeny | EF Education-EasyPost | 1:30:08 |
| 39 | Quentin Pacher | Groupama-FDJ | 1:33:27 |
| 40 | Clément Venturini | Arkea-B&B Hotels | 1:36:36 |
| 41 | Mathieu van der Poel | Alpecin-Deceuninck | 1:39:39 |
| 42 | Marc Soler | UAE Team Emirates-XRG | 1:41:30 |
| 43 | Quinn Simmons | Lidl-Trek | 1:42:14 |
| 44 | Pascal Eenkhoorn | Soudal Quick-Step | 1:42:16 |
| 45 | Tim Wellens | UAE Team Emirates-XRG | 1:44:41 |
| 46 | Alex Baudin | EF Education-EasyPost | 1:44:59 |
| 47 | Geraint Thomas | INEOS Grenadiers | 1:45:17 |
| 48 | Neilson Powless | EF Education-EasyPost | 1:48:00 |
| 49 | Simone Velasco | XDS Astana Team | 1:49:19 |
| 50 | Markus Hoelgaard | Uno-X Mobility | 1:49:48 |
| 51 | Frank van den Broek | Team Picnic PostNL | 1:49:58 |
| 52 | Julian Alaphilippe | Tudor Pro Cycling Team | 1:50:46 |
| 53 | Michael Storer | Tudor Pro Cycling Team | 1:50:51 |
| 54 | Thomas Gachignard | Team TotalEnergies | 1:51:27 |
| 55 | Einer Rubio | Movistar Team | 1:51:49 |
| 56 | Axel Laurance | INEOS Grenadiers | 1:52:02 |
| 57 | Alexandre Delettre | Team TotalEnergies | 1:53:01 |
| 58 | Tiesj Benoot | Team Visma | Lease a Bike | 1:54:14 |
| 59 | Michael Woods | Israel-Premier Tech | 1:57:22 |
| 60 | Bruno Armirail | Decathlon AG2R La Mondiale | 1:57:39 |
| 61 | Emiel Verstrynge | Alpecin-Deceuninck | 1:58:44 |
| 62 | Mathieu Burgaudeau | Team TotalEnergies | 1:59:32 |
| 63 | Santiago Buitrago | Bahrain Victorious | 1:59:42 |
| 64 | Jasper Stuyven | Lidl-Trek | 2:01:24 |
| 65 | Wout van Aert | Team Visma | Lease a Bike | 2:01:58 |
| 66 | Valentin Paret-Peintre | Soudal Quick-Step | 2:02:33 |
| 67 | Max Schachmann | Soudal Quick-Step | 2:05:36 |
| 68 | Nelson Oliveira | Movistar Team | 2:08:56 |
| 69 | Alexey Lutsenko | Israel-Premier Tech | 2:09:03 |
| 70 | Mathis Le Berre | Arkea-B&B Hotels | 2:11:30 |
| 71 | Andreas Leknessund | Uno-X Mobility | 2:11:58 |
| 72 | Jenno Berckmoes | Lotto | 2:13:09 |
| 73 | Oliver Naesen | Decathlon AG2R La Mondiale | 2:14:04 |
| 74 | Michael Valgren | EF Education-EasyPost | 2:15:19 |
| 75 | Marius Mayrhofer | Tudor Pro Cycling Team | 2:16:37 |
| 76 | Ewen Costiou | Arkea-B&B Hotels | 2:17:04 |
| 77 | Cyril Barthe | Groupama-FDJ | 2:17:55 |
| 78 | Ion Izagirre | Cofidis | 2:18:21 |
| 79 | Krists Neilands | Israel-Premier Tech | 2:20:00 |
| 80 | Pavel Sivakov | UAE Team Emirates-XRG | 2:21:07 |
| 81 | Brent Van Moer | Lotto | 2:23:07 |
| 82 | Nils Politt | UAE Team Emirates-XRG | 2:24:10 |
| 83 | Jonas Abrahamsen | Uno-X Mobility | 2:24:29 |
| 84 | Bastien Tronchon | Decathlon AG2R La Mondiale | 2:25:23 |
| 85 | Laurence Pithie | Red Bull-BORA-hansgrohe | 2:26:38 |
| 86 | Kasper Asgreen | EF Education-EasyPost | 2:27:06 |
| 87 | Lenny Martinez | Bahrain Victorious | 2:27:07 |
| 88 | Tobias Foss | INEOS Grenadiers | 2:27:17 |
| 89 | Marco Haller | Tudor Pro Cycling Team | 2:28:05 |
| 90 | Clément Champoussin | XDS Astana Team | 2:28:34 |
| 91 | Mike Teunissen | XDS Astana Team | 2:30:12 |
| 92 | Toms Skujins | Lidl-Trek | 2:30:21 |
| 93 | Alex Aranburu | Cofidis | 2:31:08 |
| 94 | Tobias Lund Andresen | Team Picnic PostNL | 2:33:13 |
| 95 | Kaden Groves | Alpecin-Deceuninck | 2:33:30 |
| 96 | Marc Hirschi | Tudor Pro Cycling Team | 2:33:40 |
| 97 | Damien Touzé | Cofidis | 2:34:23 |
| 98 | Louis Barré | Intermarché-Wanty | 2:35:05 |
| 99 | Iván Romeo | Movistar Team | 2:37:36 |
| 100 | Fred Wright | Bahrain Victorious | 2:39:11 |
| 101 | Jonas Rickaert | Alpecin-Deceuninck | 2:40:11 |
| 102 | Dylan Teuns | Cofidis | 2:41:08 |
| 103 | Clément Russo | Groupama-FDJ | 2:41:32 |
| 104 | Matteo Trentin | Tudor Pro Cycling Team | 2:41:34 |
| 105 | Anders Halland Johannessen | Uno-X Mobility | 2:42:12 |
| 106 | William Barta | Movistar Team | 2:43:10 |
| 107 | Matis Louvel | Israel-Premier Tech | 2:43:56 |
| 108 | Gianni Moscon | Red Bull-BORA-hansgrohe | 2:44:18 |
| 109 | Mauro Schmid | Team Jayco-AlUla | 2:45:22 |
| 110 | Pablo Castrillo | Movistar Team | 2:46:38 |
| 111 | Gianni Vermeersch | Alpecin-Deceuninck | 2:47:06 |
| 112 | Vincenzo Albanese | EF Education-EasyPost | 2:49:55 |
| 113 | Niklas Märkl | Team Picnic PostNL | 2:51:52 |
| 114 | Thibau Nys | Lidl-Trek | 2:55:40 |
| 115 | Connor Swift | INEOS Grenadiers | 2:57:27 |
| 116 | Anthony Turgis | Team TotalEnergies | 2:57:29 |
| 117 | Paul Penhoët | Groupama-FDJ | 2:58:05 |
| 118 | Iván García Cortina | Movistar Team | 3:02:03 |
| 119 | Danny van Poppel | Red Bull-BORA-hansgrohe | 3:02:56 |
| 120 | Alberto Dainese | Tudor Pro Cycling Team | 3:03:29 |
| 121 | Matej Mohoric | Bahrain Victorious | 3:03:30 |
| 122 | Edoardo Affini | Team Visma | Lease a Bike | 3:04:55 |
| 123 | Jake Stewart | Israel-Premier Tech | 3:04:58 |
| 124 | Eduardo Sepulveda | Lotto | 3:06:00 |
| 125 | Robert Stannard | Bahrain Victorious | 3:06:20 |
| 126 | Sam Watson | INEOS Grenadiers | 3:14:35 |
| 127 | Pascal Ackermann | Israel-Premier Tech | 3:15:26 |
| 128 | Tim Naberman | Team Picnic PostNL | 3:15:47 |
| 129 | Lucas Plapp | Team Jayco-AlUla | 3:16:11 |
| 130 | Magnus Cort | Uno-X Mobility | 3:17:35 |
| 131 | Sean Flynn | Team Picnic PostNL | 3:20:02 |
| 132 | Biniam Girmay | Intermarché-Wanty | 3:20:45 |
| 133 | Jonas Rutsch | Intermarché-Wanty | 3:26:26 |
| 134 | Arnaud De Lie | Lotto | 3:26:50 |
| 135 | Amaury Capiot | Arkea-B&B Hotels | 3:27:05 |
| 136 | Pavel Bittner | Team Picnic PostNL | 3:27:15 |
| 137 | Luke Durbridge | Team Jayco-AlUla | 3:28:15 |
| 138 | Elmar Reinders | Team Jayco-AlUla | 3:28:51 |
| 139 | Silvan Dillier | Alpecin-Deceuninck | 3:28:57 |
| 140 | Lewis Askey | Groupama-FDJ | 3:29:25 |
| 141 | Laurenz Rex | Intermarché-Wanty | 3:31:03 |
| 142 | Hugo Page | Intermarché-Wanty | 3:31:31 |
| 143 | Mattéo Vercher | Team TotalEnergies | 3:31:54 |
| 144 | Jarrad Drizners | Lotto | 3:33:12 |
| 145 | Vito Braet | Intermarché-Wanty | 3:33:35 |
| 146 | Mick van Dijke | Red Bull-BORA-hansgrohe | 3:33:41 |
| 147 | Stian Fredheim | Uno-X Mobility | 3:33:42 |
| 148 | Alexis Renard | Cofidis | 3:34:33 |
| 149 | Dylan Groenewegen | Team Jayco-AlUla | 3:35:06 |
| 150 | Jonathan Milan | Lidl-Trek | 3:35:55 |
| 151 | Bert Van Lerberghe | Soudal Quick-Step | 3:36:49 |
| 152 | Tim Merlier | Soudal Quick-Step | 3:37:07 |
| 153 | Benjamin Thomas | Cofidis | 3:37:21 |
| 154 | Arnaud Démare | Arkea-B&B Hotels | 3:37:28 |
| 155 | Guillaume Boivin | Israel-Premier Tech | 3:37:41 |
| 156 | Sébastien Grignard | Lotto | 3:38:22 |
| 157 | Luka Mezgec | Team Jayco-AlUla | 3:39:31 |
| 158 | Phil Bauhaus | Bahrain Victorious | 3:39:36 |
| 159 | Davide Ballerini | XDS Astana Team | 3:41:19 |
| 160 | Kamil Gradek | Bahrain Victorious | 3:43:38 |
| 161 | Yevgeniy Fedorov | XDS Astana Team | 3:45:47 |
| 162 | Simone Consonni | Lidl-Trek | 3:47:29 |
| 163 | Fabian Lienhard | Tudor Pro Cycling Team | 3:47:42 |
| 164 | Roel van Sintmaartensdijk | Intermarché-Wanty | 3:47:45 |
| 165 | Edward Theuns | Lidl-Trek | 3:48:11 |
| 166 | Jordi Meeus | Red Bull-BORA-hansgrohe | 3:50:09 |
Stage 15 map & profile:

Stage 15 map

Stage 15 profile
Stage 15 photos by Fotoreporter Sirotti:

GC leader Tadej Pogacar after his team had been presented during the starting ceremonies.

Current Best Young Rider Florian Lipowitz heads to the start.

Points classification leader Jonathan Milan

Ben O'Connor

Groupama-FDJ riders before the start.

Julian Alaphilippe

Jonas Vingegaard

Looks like it's about time to go race bicycles.

Tim Wellens wins stage 15.

Tadej Pogaar finished safely in the pack.

Stage winner Tim Wellens

On Tuesday Tadej Pogacar will start stage 16 in yellow.