
Sunday, September 7: Stage 15, A Veiga/Vegadeo - Monforte de Lemos, 167.8 km
Stage 15 map & profile | Stage 15 photos

Mads Pedersen wins stage 15. Sirotti photo
Bill McGann’s book Why Your Bike Is Made in Asia: My career in bicycles as I watched two continents squander an industry 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 at Monforte de Lemos at 2:05 PM, local time: 22C (71F), mostly cloudy, with the wind from the west-southwest at 10 km/hr (6 mph). There is just a 2% chance of rain.
Rated ascents:
The stage: A mid-mountain stage in the ever-winding Galicia. The terrain will be tough all day long and, although the sprinter teams will try to control the stage, those who escape or maybe a brave rider who attacks in the final kilometers may have a chance at winning.
The race: Here's the race organizer's stage 15 report.
Frustrated in the early sprints of La Vuelta 25, Mads Pedersen made the breakaway on day 15 and claimed victory in Monforte de Lemos. The Danish star was accompanied by four Lidl-Trek teammates — Bernard, Ciccone, Ghebreigzabhier, and Verona — in a 47-man group. After surviving the early ascents of the day, he took matters into his own hands in the final 35 kilometres, first catching Jay Vine (UAE Team Emirates-XRG) and Louis Vervaeke (Soudal Quick-Step), and then getting the better of Orluis Aular and Marco Frigo in the final sprint.
This is his fourth success in La Vuelta, the first since stage 19 of the 2022 edition. Prior to this, Lidl-Trek had scored nine top-3 results without claiming victory - a streak eventually broken by their Danish star. His compatriot Jonas Vingegaard (Visma-Lease a Bike) safely navigated the stage, taking La Roja into the second rest day. The road to Monforte de Lemos resulted in one change in the overall top 10, with Junior Lecerf (Soudal Quick-Step) moving into 9th place through the breakaway.

A selfie of the classification leaders on the start line under cloudy skies.
The race
After two brutal mountain top finishes, the peloton of La Vuelta 25 face a rolling stage from A Veiga/Vegado and Monforte de Lemos. Will attackers or sprinters rule on the eve of the second rest day?
A massive battle for a 47-man breakaway
Attackers sure give it their all to shake up the peloton with a brutal uphill start. Jakub Otruba (Caja Rural-Seguros RGA) sets off from the start and rapidly opens a gap of over a minute. Behind him, a flurry of attacks leads to the emergence of a 47-man breakaway.

37 km into the stage a break of 47 riders is 1min 35sec ahead of the pack. In the break are Jay Vine & Mads Pedersen. Photo: Sprint Cycling
Jay Vine is up there, chasing the KOM points over the Alto de Garganta (cat. 1, km 16.5) and the Alto de Barbeitos (km 54.7). He’s joined by Ivo Oliveira, aiming to continue UAE Team Emirates-XRG’s extraordinary winning streak.
Mads Pedersen is also up there with four Lidl-Trek teammates (Bernard, Ciccone, Ghebreigzabhier, Verona), as well as Orluis Aular (Movistar), Nico Denz (Red Bull-Bora-Hansgrohe), Magnus Sheffield, Egan Bernal, Michal Kwiatkowski (Ineos Grenadiers), Sean Quinn (EF Education-EasyPost), Stefan Küng (Groupama-FDJ), Eddie Dunbar (Jayco AlUla), Kevin Vermaerke (Picnic PostNL)…
Soudal Quick-Step’s Junior Lecerf is the best of them on GC (13th, +18’57’’), ahead of Ciccone (16th, +25’29’’), and Egan Bernal (18th, +29’13’’).
Pedersen rules the break
Vine and Louis Vervaeke (Soudal Quick-Step) set off ahead of the second summit of the day and continue their effort on the valley. Into the last 60 kilometres, they are 3 minutes ahead of their breakaway rivals, while the gap to the bunch keeps on increasing, well over 10 minutes.
The chase group explodes on an uphill section with 32 kilometres to go. Pedersen leads the charge with Buitrago and Bernal. They’re joined by Aular, Sheffield, Dunbar and Marco Frigo (Israel Premier Tech). This group bridges the gap to the lead duo with 7 km to go.
Attacks fly in the finale, but Pedersen manages to control everything. Frigo opens up the sprint, Sheffield goes down in the final turn… And Pedersen powers to his 4th La Vuelta stage win, his fifth Grand Tour victory of the year.
Led by Bahrain Victorious, the peloton finish with a gap of 13’31’’. Lecerf is 9th overall, a handful of seconds behind Sepp Kuss (Visma-Lease a Bike).
Complete results:
167.8 kilometers raced at an average speed of 41.566 km/hr
| 1 | Mads Pedersen | Lidl-Trek | 4hr 2min 13sec |
| 2 | Orluis Aular | Movistar Team | s.t. |
| 3 | Marco Frigo | Israel-Premier Tech | s.t. |
| 4 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 5 | Edward Dunbar | Team Jayco-AlUla | s.t. |
| 6 | Egan Bernal | INEOS Grenadiers | s.t. |
| 7 | Louis Vervaeke | Soudal Quick-Step | s.t. |
| 8 | Jay Vine | UAE Team Emirates-XRG | @ 8sec |
| 9 | Magnus Sheffield | INEOS Grenadiers | @ 0sec |
| 10 | Alec Segaert | Lotto | 0:23 |
| 11 | Ivo Oliveira | UAE Team Emirates-XRG | s.t. |
| 12 | Jake Stewart | Israel-Premier Tech | s.t. |
| 13 | Edward Planckaert | Alpecin-Deceuninck | s.t. |
| 14 | Lukas Nerurkar | EF Education-EasyPost | s.t. |
| 15 | Huub Artz | Intermarché-Wanty | s.t. |
| 16 | Michal Kwiatkowski | INEOS Grenadiers | s.t. |
| 17 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 18 | Kelland O'Brien | Team Jayco-AlUla | s.t. |
| 19 | Carlos Canal | Movistar Team | s.t. |
| 20 | Lars Craps | Lotto | s.t. |
| 21 | Nicolas Vinokurov | XDS Astana Team | s.t. |
| 22 | Alex Molenaar | Caja Rural-Seguros RGA | s.t. |
| 23 | David González | Q36.5 Pro Cycling Team | s.t. |
| 24 | Stefan Küng | Groupama-FDJ | s.t. |
| 25 | Bjoern Koerdt | Team Picnic PostNL | s.t. |
| 26 | Alessandro Verre | Arkea-B&B Hotels | s.t. |
| 27 | Max Schachmann | Soudal Quick-Step | s.t. |
| 28 | Jakub Otruba | Caja Rural-Seguros RGA | s.t. |
| 29 | Sander De Pestel | Decathlon AG2R La Mondiale | s.t. |
| 30 | Clément Braz Afonso | Groupama-FDJ | s.t. |
| 31 | Kevin Vermaerke | Team Picnic PostNL | s.t. |
| 32 | Mario Aparicio | Burgos Burpellet BH | s.t. |
| 33 | Junior Lecerf | Soudal Quick-Step | s.t. |
| 34 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | s.t. |
| 35 | Nico Denz | Red Bull-BORA-hansgrohe | s.t. |
| 36 | David de la Cruz | Q36.5 Pro Cycling Team | s.t. |
| 37 | Giulio Ciccone | Lidl-Trek | s.t. |
| 38 | Julien Bernard | Lidl-Trek | s.t. |
| 39 | Juan Martinez | Team Picnic PostNL | s.t. |
| 40 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | s.t. |
| 41 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 42 | Sean Quinn | EF Education-EasyPost | 2:04 |
| 43 | Léo Bisiaux | Decathlon AG2R La Mondiale | 2:52 |
| 44 | Thibaud Gruel | Groupama-FDJ | 11:01 |
| 45 | Carlos Verona | Lidl-Trek | 11:04 |
| 46 | Amanuel Ghebreigzabhier | Lidl-Trek | 13:22 |
| 47 | Roman Ermakov | Bahrain Victorious | 13:31 |
| 48 | Finlay Pickering | Bahrain Victorious | s.t. |
| 49 | Mathijs Paasschens | Bahrain Victorious | s.t. |
| 50 | Antonio Tiberi | Bahrain Victorious | s.t. |
| 51 | Torstein Træen | Bahrain Victorious | s.t. |
| 52 | Wilco Kelderman | Team Visma | Lease a Bike | s.t. |
| 53 | Pier-André Côté | Israel-Premier Tech | s.t. |
| 54 | Jack Haig | Bahrain Victorious | s.t. |
| 55 | Jan Hirt | Israel-Premier Tech | s.t. |
| 56 | Ethan Vernon | Israel-Premier Tech | s.t. |
| 57 | Matthew Riccitello | Israel-Premier Tech | s.t. |
| 58 | Nadav Raisberg | Israel-Premier Tech | s.t. |
| 59 | Arne Marit | Intermarché-Wanty | s.t. |
| 60 | Tom Pidcock | Q36.5 Pro Cycling Team | s.t. |
| 61 | Dries De Pooter | Intermarché-Wanty | s.t. |
| 62 | Luca Van Boven | Intermarché-Wanty | s.t. |
| 63 | João Almeida | UAE Team Emirates-XRG | s.t. |
| 64 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 65 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 66 | Domen Novak | UAE Team Emirates-XRG | s.t. |
| 67 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 68 | Ben Tulett | Team Visma | Lease a Bike | s.t. |
| 69 | Tim van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 70 | Jai Hindley | Red Bull-BORA-hansgrohe | s.t. |
| 71 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 72 | Damien Howson | Q36.5 Pro Cycling Team | s.t. |
| 73 | Matteo Sobrero | Red Bull-BORA-hansgrohe | s.t. |
| 74 | Louis Meintjes | Intermarché-Wanty | s.t. |
| 75 | Simone Petilli | Intermarché-Wanty | s.t. |
| 76 | Marcel Camprubí | Q36.5 Pro Cycling Team | s.t. |
| 77 | Jaume Guardeño | Caja Rural-Seguros RGA | s.t. |
| 78 | Nans Peters | Decathlon AG2R La Mondiale | s.t. |
| 79 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 80 | Bruno Armirail | Decathlon AG2R La Mondiale | s.t. |
| 81 | Mikkel Bjerg | UAE Team Emirates-XRG | s.t. |
| 82 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | s.t. |
| 83 | Callum Scotson | Decathlon AG2R La Mondiale | s.t. |
| 84 | Jordan Labrosse | Decathlon AG2R La Mondiale | s.t. |
| 85 | Harold Tejada | XDS Astana Team | s.t. |
| 86 | Nicola Conci | XDS Astana Team | s.t. |
| 87 | Abel Balderstone | Caja Rural-Seguros RGA | s.t. |
| 88 | Wout Poels | XDS Astana Team | s.t. |
| 89 | Fausto Masnada | XDS Astana Team | s.t. |
| 90 | Thomas Silva | Caja Rural-Seguros RGA | s.t. |
| 91 | Patrick Gamper | Team Jayco-AlUla | s.t. |
| 92 | Joan Bou | Caja Rural-Seguros RGA | s.t. |
| 93 | Hugo de la Calle | Burgos Burpellet BH | s.t. |
| 94 | José Luis Faura | Burgos Burpellet BH | s.t. |
| 95 | Lorenzo Fortunato | XDS Astana Team | s.t. |
| 96 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | s.t. |
| 97 | Felix Grossschartner | UAE Team Emirates-XRG | s.t. |
| 98 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | 13:46 |
| 99 | Martin López | XDS Astana Team | 13:50 |
| 100 | Liam Slock | Lotto | s.t. |
| 101 | Jonas Gregaard | Lotto | s.t. |
| 102 | Anders Foldager | Team Jayco-AlUla | s.t. |
| 103 | Eduardo Sepulveda | Lotto | s.t. |
| 104 | Jenthe Biermans | Arkea-B&B Hotels | s.t. |
| 105 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 106 | Sergio Samitier | Cofidis | s.t. |
| 107 | Ben Turner | INEOS Grenadiers | 13:59 |
| 108 | Bob Jungels | INEOS Grenadiers | s.t. |
| 109 | Brieuc Rolland | Groupama-FDJ | s.t. |
| 110 | Filippo Ganna | INEOS Grenadiers | s.t. |
| 111 | Victor Langellotti | INEOS Grenadiers | s.t. |
| 112 | David Gaudu | Groupama-FDJ | s.t. |
| 113 | Remi Cavagna | Groupama-FDJ | s.t. |
| 114 | Timo Roosen | Team Picnic PostNL | s.t. |
| 115 | Patrick Eddy | Team Picnic PostNL | s.t. |
| 116 | Emanuel Buchmann | Cofidis | s.t. |
| 117 | Jesus Herrada | Cofidis | s.t. |
| 118 | Nicolò Buratti | Bahrain Victorious | s.t. |
| 119 | Rudy Molard | Groupama-FDJ | s.t. |
| 120 | Chris Hamilton | Team Picnic PostNL | s.t. |
| 121 | Markel Beloki | EF Education-EasyPost | s.t. |
| 122 | Victor Guernalec | Arkea-B&B Hotels | s.t. |
| 123 | Léandre Lozouet | Arkea-B&B Hotels | s.t. |
| 124 | Mikel Landa | Soudal Quick-Step | s.t. |
| 125 | Iván García Cortina | Movistar Team | s.t. |
| 126 | Javier Romo | Movistar Team | s.t. |
| 127 | Tobias Bayer | Alpecin-Deceuninck | s.t. |
| 128 | Gal Glivar | Alpecin-Deceuninck | s.t. |
| 129 | Christopher Juul-Jensen | Team Jayco-AlUla | s.t. |
| 130 | Brandon Rivera | INEOS Grenadiers | s.t. |
| 131 | Andrea Bagioli | Lidl-Trek | s.t. |
| 132 | Dion Smith | Intermarché-Wanty | s.t. |
| 133 | Daan Hoole | Lidl-Trek | s.t. |
| 134 | Pierre Thierry | Arkea-B&B Hotels | s.t. |
| 135 | Jefferson Cepeda | Movistar Team | s.t. |
| 136 | Michel Hessmann | Movistar Team | s.t. |
| 137 | Louis Rouland | Arkea-B&B Hotels | s.t. |
| 138 | James Shaw | EF Education-EasyPost | s.t. |
| 139 | Juan Ayuso | UAE Team Emirates-XRG | s.t. |
| 140 | Xabier Azparren | Q36.5 Pro Cycling Team | s.t. |
| 141 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 142 | Bryan Coquard | Cofidis | s.t. |
| 143 | Jonas Rickaert | Alpecin-Deceuninck | s.t. |
| 144 | Mauri Vansevenant | Soudal Quick-Step | s.t. |
| 145 | Jasper De Buyst | Lotto | 14:32 |
| 146 | Elia Viviani | Lotto | s.t. |
| 147 | Fabio Christen | Q36.5 Pro Cycling Team | s.t. |
| 148 | Stanislaw Aniolkowski | Cofidis | 14:57 |
| 149 | Jasper Philipsen | Alpecin-Deceuninck | 15:29 |
| 150 | Søren Kragh Andersen | Lidl-Trek | s.t. |
| 151 | Kamiel Bonneu | Intermarché-Wanty | s.t. |
| 152 | Oscar Riesebeek | Alpecin-Deceuninck | s.t. |
| 153 | Jardi Van Der Lee | EF Education-EasyPost | s.t. |
| 154 | Dylan van Baarle | Team Visma | Lease a Bike | 15:45 |
| 155 | Victor Campenaerts | Team Visma | Lease a Bike | s.t. |
| 156 | Joel Nicolau | Caja Rural-Seguros RGA | 16:00 |
| 157 | Sergio Chumil | Burgos Burpellet BH | 19:29 |
GC after stage 15:
2,404.9 kilometers raced so far at an average speed of 41.757 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 57hr 35min 33sec |
| 2 | João Almeida | UAE Team Emirates-XRG | @ 48sec |
| 3 | Tom Pidcock | Q36.5 Pro Cycling Team | 2:38 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:10 |
| 5 | Felix Gall | Decathlon AG2R La Mondiale | 3:30 |
| 6 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:21 |
| 7 | Matthew Riccitello | Israel-Premier Tech | 4:53 |
| 8 | Sepp Kuss | Team Visma | Lease a Bike | 5:46 |
| 9 | Junior Lecerf | Soudal Quick-Step | 5:49 |
| 10 | Torstein Træen | Bahrain Victorious | 6:33 |
| 11 | Matteo Jorgenson | Team Visma | Lease a Bike | 8:52 |
| 12 | Harold Tejada | XDS Astana Team | 11:48 |
| 13 | Giulio Ciccone | Lidl-Trek | 12:21 |
| 14 | Egan Bernal | INEOS Grenadiers | 15:42 |
| 15 | Bruno Armirail | Decathlon AG2R La Mondiale | 16:18 |
| 16 | Abel Balderstone | Caja Rural-Seguros RGA | 19:26 |
| 17 | Jaume Guardeño | Caja Rural-Seguros RGA | 22:15 |
| 18 | Louis Meintjes | Intermarché-Wanty | 26:36 |
| 19 | Santiago Buitrago | Bahrain Victorious | 28:52 |
| 20 | Marc Soler | UAE Team Emirates-XRG | 33:50 |
| 21 | Gianmarco Garofoli | Soudal Quick-Step | 33:53 |
| 22 | Kevin Vermaerke | Team Picnic PostNL | 39:45 |
| 23 | Martin López | XDS Astana Team | 44:34 |
| 24 | Ben Tulett | Team Visma | Lease a Bike | 45:10 |
| 25 | Edward Dunbar | Team Jayco-AlUla | 45:31 |
| 26 | Rudy Molard | Groupama-FDJ | 49:27 |
| 27 | Marco Frigo | Israel-Premier Tech | 54:10 |
| 28 | Jefferson Cepeda | Movistar Team | 56:50 |
| 29 | Felix Grossschartner | UAE Team Emirates-XRG | 57:57 |
| 30 | Damien Howson | Q36.5 Pro Cycling Team | 1:03:41 |
| 31 | Jay Vine | UAE Team Emirates-XRG | 1:04:31 |
| 32 | Mikel Landa | Soudal Quick-Step | 1:05:06 |
| 33 | Finlay Pickering | Bahrain Victorious | 1:06:23 |
| 34 | Sergio Samitier | Cofidis | 1:08:13 |
| 35 | Lorenzo Fortunato | XDS Astana Team | 1:09:37 |
| 36 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | 1:12:32 |
| 37 | Louis Vervaeke | Soudal Quick-Step | 1:14:29 |
| 38 | Julien Bernard | Lidl-Trek | 1:15:44 |
| 39 | Wout Poels | XDS Astana Team | 1:18:01 |
| 40 | Brieuc Rolland | Groupama-FDJ | 1:20:06 |
| 41 | Andrea Bagioli | Lidl-Trek | 1:24:09 |
| 42 | Callum Scotson | Decathlon AG2R La Mondiale | 1:25:34 |
| 43 | Victor Campenaerts | Team Visma | Lease a Bike | 1:25:54 |
| 44 | Clément Braz Afonso | Groupama-FDJ | 1:26:21 |
| 45 | Fausto Masnada | XDS Astana Team | 1:27:16 |
| 46 | Carlos Verona | Lidl-Trek | 1:27:54 |
| 47 | Juan Martinez | Team Picnic PostNL | 1:29:43 |
| 48 | Javier Romo | Movistar Team | 1:30:51 |
| 49 | Lars Craps | Lotto | 1:31:21 |
| 50 | Jan Hirt | Israel-Premier Tech | 1:31:22 |
| 51 | Markel Beloki | EF Education-EasyPost | 1:32:27 |
| 52 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 1:33:56 |
| 53 | Antonio Tiberi | Bahrain Victorious | 1:34:44 |
| 54 | Bob Jungels | INEOS Grenadiers | 1:37:35 |
| 55 | Victor Langellotti | INEOS Grenadiers | 1:39:00 |
| 56 | Léo Bisiaux | Decathlon AG2R La Mondiale | 1:39:25 |
| 57 | Carlos Canal | Movistar Team | 1:39:54 |
| 58 | Pierre Thierry | Arkea-B&B Hotels | 1:39:55 |
| 59 | Sander De Pestel | Decathlon AG2R La Mondiale | 1:40:21 |
| 60 | Magnus Sheffield | INEOS Grenadiers | 1:40:54 |
| 61 | Gijs Leemreize | Team Picnic PostNL | 1:41:30 |
| 62 | Brandon Rivera | INEOS Grenadiers | 1:44:53 |
| 63 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 1:44:54 |
| 64 | Max Schachmann | Soudal Quick-Step | 1:47:37 |
| 65 | James Shaw | EF Education-EasyPost | 1:47:43 |
| 66 | Juan Ayuso | UAE Team Emirates-XRG | 1:50:44 |
| 67 | Thomas Silva | Caja Rural-Seguros RGA | 1:50:45 |
| 68 | Stefan Küng | Groupama-FDJ | 1:51:07 |
| 69 | Michal Kwiatkowski | INEOS Grenadiers | 1:51:23 |
| 70 | José Luis Faura | Burgos Burpellet BH | 1:51:25 |
| 71 | Chris Hamilton | Team Picnic PostNL | 1:52:47 |
| 72 | David González | Q36.5 Pro Cycling Team | 1:54:22 |
| 73 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | 1:54:23 |
| 74 | Alex Molenaar | Caja Rural-Seguros RGA | 1:55:04 |
| 75 | Sean Quinn | EF Education-EasyPost | 1:57:50 |
| 76 | Bjoern Koerdt | Team Picnic PostNL | 1:58:41 |
| 77 | Hugo de la Calle | Burgos Burpellet BH | 1:59:12 |
| 78 | Wilco Kelderman | Team Visma | Lease a Bike | 2:00:17 |
| 79 | Mauri Vansevenant | Soudal Quick-Step | 2:00:39 |
| 80 | Michel Hessmann | Movistar Team | 2:01:04 |
| 81 | Sergio Chumil | Burgos Burpellet BH | 2:01:39 |
| 82 | Jack Haig | Bahrain Victorious | 2:03:25 |
| 83 | Eduardo Sepulveda | Lotto | 2:04:06 |
| 84 | Nicola Conci | XDS Astana Team | 2:05:42 |
| 85 | David de la Cruz | Q36.5 Pro Cycling Team | 2:06:13 |
| 86 | Jesus Herrada | Cofidis | 2:08:01 |
| 87 | Roman Ermakov | Bahrain Victorious | 2:10:48 |
| 88 | Alec Segaert | Lotto | 2:12:02 |
| 89 | Jakub Otruba | Caja Rural-Seguros RGA | 2:13:05 |
| 90 | Nico Denz | Red Bull-BORA-hansgrohe | 2:13:16 |
| 91 | Nicolas Vinokurov | XDS Astana Team | 2:15:50 |
| 92 | Orluis Aular | Movistar Team | 2:16:05 |
| 93 | Nans Peters | Decathlon AG2R La Mondiale | 2:16:40 |
| 94 | Jordan Labrosse | Decathlon AG2R La Mondiale | 2:17:07 |
| 95 | David Gaudu | Groupama-FDJ | 2:18:17 |
| 96 | Joan Bou | Caja Rural-Seguros RGA | 2:19:38 |
| 97 | Mathijs Paasschens | Bahrain Victorious | 2:21:43 |
| 98 | Jardi Van Der Lee | EF Education-EasyPost | 2:22:34 |
| 99 | Lukas Nerurkar | EF Education-EasyPost | 2:23:37 |
| 100 | Gal Glivar | Alpecin-Deceuninck | 2:24:37 |
| 101 | Thibaud Gruel | Groupama-FDJ | 2:24:54 |
| 102 | Emanuel Buchmann | Cofidis | s.t. |
| 103 | Kelland O'Brien | Team Jayco-AlUla | 2:24:57 |
| 104 | Jonas Gregaard | Lotto | 2:25:54 |
| 105 | Iván García Cortina | Movistar Team | 2:28:03 |
| 106 | Simone Petilli | Intermarché-Wanty | 2:29:42 |
| 107 | Jonas Rickaert | Alpecin-Deceuninck | 2:30:51 |
| 108 | Mario Aparicio | Burgos Burpellet BH | 2:31:06 |
| 109 | Patrick Gamper | Team Jayco-AlUla | 2:31:12 |
| 110 | Ivo Oliveira | UAE Team Emirates-XRG | 2:31:43 |
| 111 | Huub Artz | Intermarché-Wanty | 2:32:27 |
| 112 | Mads Pedersen | Lidl-Trek | 2:34:45 |
| 113 | Pier-André Côté | Israel-Premier Tech | 2:36:49 |
| 114 | Luca Van Boven | Intermarché-Wanty | 2:37:19 |
| 115 | Marcel Camprubí | Q36.5 Pro Cycling Team | 2:38:16 |
| 116 | Nicolò Buratti | Bahrain Victorious | 2:39:40 |
| 117 | Louis Rouland | Arkea-B&B Hotels | 2:41:18 |
| 118 | Christopher Juul-Jensen | Team Jayco-AlUla | 2:41:56 |
| 119 | Edward Planckaert | Alpecin-Deceuninck | 2:42:30 |
| 120 | Léandre Lozouet | Arkea-B&B Hotels | 2:42:33 |
| 121 | Remi Cavagna | Groupama-FDJ | 2:43:03 |
| 122 | Joel Nicolau | Caja Rural-Seguros RGA | 2:43:56 |
| 123 | Kamiel Bonneu | Intermarché-Wanty | 2:45:06 |
| 124 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | 2:46:12 |
| 125 | Dion Smith | Intermarché-Wanty | 2:47:43 |
| 126 | Matteo Sobrero | Red Bull-BORA-hansgrohe | 2:48:44 |
| 127 | Amanuel Ghebreigzabhier | Lidl-Trek | 2:49:26 |
| 128 | Madis Mihkels | EF Education-EasyPost | 2:49:46 |
| 129 | Victor Guernalec | Arkea-B&B Hotels | 2:53:43 |
| 130 | Tobias Bayer | Alpecin-Deceuninck | 2:54:36 |
| 131 | Fabio Christen | Q36.5 Pro Cycling Team | 2:55:16 |
| 132 | Liam Slock | Lotto | 2:58:23 |
| 133 | Alessandro Verre | Arkea-B&B Hotels | 2:58:34 |
| 134 | Ben Turner | INEOS Grenadiers | 2:58:42 |
| 135 | Dries De Pooter | Intermarché-Wanty | 2:58:57 |
| 136 | Bryan Coquard | Cofidis | 2:59:35 |
| 137 | Dylan van Baarle | Team Visma | Lease a Bike | s.t. |
| 138 | Filippo Ganna | INEOS Grenadiers | 3:00:10 |
| 139 | Jake Stewart | Israel-Premier Tech | 3:01:12 |
| 140 | Jasper De Buyst | Lotto | 3:04:06 |
| 141 | Mikkel Bjerg | UAE Team Emirates-XRG | 3:05:22 |
| 142 | Tim van Dijke | Red Bull-BORA-hansgrohe | 3:10:08 |
| 143 | Xabier Azparren | Q36.5 Pro Cycling Team | 3:11:08 |
| 144 | Timo Roosen | Team Picnic PostNL | 3:16:17 |
| 145 | Ethan Vernon | Israel-Premier Tech | 3:16:43 |
| 146 | Arne Marit | Intermarché-Wanty | 3:17:15 |
| 147 | Domen Novak | UAE Team Emirates-XRG | 3:19:53 |
| 148 | Anders Foldager | Team Jayco-AlUla | 3:19:57 |
| 149 | Søren Kragh Andersen | Lidl-Trek | 3:20:25 |
| 150 | Jenthe Biermans | Arkea-B&B Hotels | 3:21:48 |
| 151 | Nadav Raisberg | Israel-Premier Tech | 3:22:26 |
| 152 | Jasper Philipsen | Alpecin-Deceuninck | 3:22:59 |
| 153 | Daan Hoole | Lidl-Trek | 3:26:36 |
| 154 | Elia Viviani | Lotto | 3:26:48 |
| 155 | Patrick Eddy | Team Picnic PostNL | 3:37:28 |
| 156 | Stanislaw Aniolkowski | Cofidis | 3:37:39 |
| 157 | Oscar Riesebeek | Alpecin-Deceuninck | 3:49:51 |
Stage 15 map & profile:

Stage 15 map

Stage 15 profile
Stage 15 photos by Fotoreporter Sirotti:

Young rider classification leader Giulio Pellizzari after his team was presented at the opening ceremonies.

Stefan Küng

Elia Viviani

GC third place Tom Pidcock signs some autographs.

GC leader Jonas Vingegaard gets his bike before the stage start.

Looks like it is about time to race bicycles in Spain.

Here they come for the sprint. Mads Pedersen has the jump on the others.

Mads Pedersen emphatically wins stage fifteen.

Stage winner and points classification leader Mads Pedersen

GC leader Jonas Vingegaard will be in red when stage 16 starts on Tuesday.