
Thursday, September 4: Stage 12, Laredo - Los Corrales de Buelna, 144.9 km
Stage 12 map & profile | Stage 12 photos

Juan Ayuso wins stage 12. Sprint Cycling photo
Les Woodland's book Cycling Heroes: The Golden Years is available in the print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the finish city of Los Corrales de Buelna at 3:05 PM, local time: 22C (70F), mostly cloudy, with the wind from the northwest at 13 km/hr (7 mph). There is a 4% chance of rain.
Rated ascents:
The stage: Cantabria will, again, give us a fast, agitated and fun stage. The climb to Alisas may serve to attempt the escape of the day and the tough ascent to Collada de Brenes in the final part will be decisive. The favorite riders will have to make sure to not fall behind in the summit as the final stretch before the finish-line will be very fast.
The race: Here's the organizer's stage 12 report.
A week after claiming his first La Vuelta stage win at Cerler, Juan Ayuso (UAE Team Emirates-XRG) powered to a second victory in Los Corrales de Buelna, on roads that had already showcased his budding talent in youth categories. The Spaniard has now grown into a star who showed his grit and skills to claim victory from a hard-fought breakaway. Over the day’s climbs, Ayuso benefited from the crucial support of Marc Soler, his teammate in UAE Team Emirates-XRG - a squad he is set to leave at the end of the season - before launching his decisive attack with 25 km to go. Javier Romo (Movistar) managed to follow him, but couldn’t withstand his compatriot’s acceleration in a two-man sprint. Jonas Vingegaard (Visma–Lease a Bike) and his GC rivals crossed the line more than six minutes behind. Their big showdown is expected on stage 13, up the Alto de L’Angliru.

A selfie of the stage 12 startline.
The race:
La Vuelta returns to Laredo, a municipality in Cantabria, hosting a stage start for the third time. A short and intense course leads the peloton to Los Corrales de Buelna, after summiting Puerto de Alisas and Collada de Brenes. Those roads bring sweet memories to Jay Vine (UAE Team Emirates-XRG), who went over the same two climbs to take his first La Vuelta stage win at Pico Jano in 2022, and to the many youngsters who showed their worth on the roads of the Vuelta al Besaya, including Juan Ayuso (UAE Team Emirates-XRG), Jesus Herrada (Cofidis), Bob Jungels (Ineos Grenadiers)…

Stage 12 gets started.
A ferocious battle for the break
As usual, attackers are very much inspired by the day’s program. And the battle for the breakaway is brutal, on the flat, and then on the first climb of the day, the cat.-2 Puerto de Alisas.
Marc Soler (UAE Team Emirates-XRG) goes first at the summit, with an impressive cohort of attackers in his wake. The breakaway is made on the valley, with 53 riders at the front, including Juan Ayuso (Lidl-Trek), Mads Pedersen (Lidl-Trek), Pablo Castrillo (Movistar), Mikel Landa (Soudal Quick-Step), Magnus Sheffield, Michal Kwiatkowski (Ineos Grenadiers), Santiago Buitrago (Bahrain Victorious), Eddie Dunbar (Jayco AlUla)…

The day's break 82 km into the stage. With 35 km to go they had a 5min 11sec lead. Sprint Cycling photo
Ayuso gets the better of Romo
With no direct GC threat at the front - Armirail trails by 8’27’’ -, the gap gradually increases while Soren Kragh Andersen and Julien Bernard control the breakaway to ensure Mads Pedersen takes the full 20 points at the intermediate sprint, in Barros (km 103.2).
The breakaway then explodes as they go through Los Corrales de Buelna a first time, and then on the decisive climb of the day, Collada de Brenes (7 km at 7.9%). James Shaw (EF Education-EasyPost), Finlay Pickering (Bahrain Victorious) and Brieuc Rolland (Groupama-FDJ) take a head start but Soler works to propel Ayuso, who sets off 3 km away from the summit, with 25 km to go to the finish.
Javier Romo (Movistar) manages to come across, and the two Spaniards work together all the way to the line. Ayuso proves to be the fastest in a two-man sprint, while Rolland completes the top 3 with a gap of 13’’. The GC contenders cross the line with a gap of 6’20’’, on the eve of L’Angliru.
Complete results:
144.9 kilometers raced at an average speed of 44.278 km/hr
| 1 | Juan Ayuso | UAE Team Emirates-XRG | 3hr 16min 21sec |
| 2 | Javier Romo | Movistar Team | s.t. |
| 3 | Brieuc Rolland | Groupama-FDJ | @ 13sec |
| 4 | Victor Campenaerts | Team Visma | Lease a Bike | 0:17 |
| 5 | Mads Pedersen | Lidl-Trek | s.t. |
| 6 | Nico Denz | Red Bull-BORA-hansgrohe | s.t. |
| 7 | Damien Howson | Q36.5 Pro Cycling Team | s.t. |
| 8 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 9 | Markel Beloki | EF Education-EasyPost | s.t. |
| 10 | Pablo Castrillo | Movistar Team | s.t. |
| 11 | Louis Vervaeke | Soudal Quick-Step | s.t. |
| 12 | Lars Craps | Lotto | s.t. |
| 13 | Abel Balderstone | Caja Rural-Seguros RGA | s.t. |
| 14 | Michel Hessmann | Movistar Team | s.t. |
| 15 | Edward Dunbar | Team Jayco-AlUla | s.t. |
| 16 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | s.t. |
| 17 | Bruno Armirail | Decathlon AG2R La Mondiale | s.t. |
| 18 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 19 | Mikel Landa | Soudal Quick-Step | s.t. |
| 20 | Finlay Pickering | Bahrain Victorious | 0:24 |
| 21 | Stefan Küng | Groupama-FDJ | 1:36 |
| 22 | Magnus Sheffield | INEOS Grenadiers | s.t. |
| 23 | Eduardo Sepulveda | Lotto | s.t. |
| 24 | Gianmarco Garofoli | Soudal Quick-Step | s.t. |
| 25 | Chris Hamilton | Team Picnic PostNL | s.t. |
| 26 | Alec Segaert | Lotto | s.t. |
| 27 | Jardi Van Der Lee | EF Education-EasyPost | s.t. |
| 28 | Rudy Molard | Groupama-FDJ | s.t. |
| 29 | Harold Tejada | XDS Astana Team | s.t. |
| 30 | Jaume Guardeño | Caja Rural-Seguros RGA | s.t. |
| 31 | Sean Quinn | EF Education-EasyPost | s.t. |
| 32 | James Shaw | EF Education-EasyPost | s.t. |
| 33 | Sergio Samitier | Cofidis | 1:47 |
| 34 | Gal Glivar | Alpecin-Deceuninck | 3:07 |
| 35 | Mario Aparicio | Burgos Burpellet BH | s.t. |
| 36 | Julien Bernard | Lidl-Trek | s.t. |
| 37 | Carlos Canal | Movistar Team | s.t. |
| 38 | Bjoern Koerdt | Team Picnic PostNL | 3:58 |
| 39 | Victor Guernalec | Arkea-B&B Hotels | s.t. |
| 40 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 41 | Luca Van Boven | Intermarché-Wanty | 4:01 |
| 42 | Jesus Herrada | Cofidis | 6:09 |
| 43 | Ben Tulett | Team Visma | Lease a Bike | 6:22 |
| 44 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 45 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 46 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 47 | João Almeida | UAE Team Emirates-XRG | s.t. |
| 48 | Felix Grossschartner | UAE Team Emirates-XRG | s.t. |
| 49 | David de la Cruz | Q36.5 Pro Cycling Team | s.t. |
| 50 | Tom Pidcock | Q36.5 Pro Cycling Team | s.t. |
| 51 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 52 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | s.t. |
| 53 | Jai Hindley | Red Bull-BORA-hansgrohe | s.t. |
| 54 | Carlos Verona | Lidl-Trek | s.t. |
| 55 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | s.t. |
| 56 | Giulio Ciccone | Lidl-Trek | s.t. |
| 57 | Andrea Bagioli | Lidl-Trek | s.t. |
| 58 | Amanuel Ghebreigzabhier | Lidl-Trek | s.t. |
| 59 | Brandon Rivera | INEOS Grenadiers | s.t. |
| 60 | Egan Bernal | INEOS Grenadiers | s.t. |
| 61 | Bob Jungels | INEOS Grenadiers | s.t. |
| 62 | Michal Kwiatkowski | INEOS Grenadiers | s.t. |
| 63 | Victor Langellotti | INEOS Grenadiers | s.t. |
| 64 | Callum Scotson | Decathlon AG2R La Mondiale | s.t. |
| 65 | Léo Bisiaux | Decathlon AG2R La Mondiale | s.t. |
| 66 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 67 | Torstein Træen | Bahrain Victorious | s.t. |
| 68 | Marco Frigo | Israel-Premier Tech | s.t. |
| 69 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | s.t. |
| 70 | Matthew Riccitello | Israel-Premier Tech | s.t. |
| 71 | Jan Hirt | Israel-Premier Tech | s.t. |
| 72 | Mauri Vansevenant | Soudal Quick-Step | s.t. |
| 73 | Junior Lecerf | Soudal Quick-Step | s.t. |
| 74 | Fausto Masnada | XDS Astana Team | s.t. |
| 75 | Lorenzo Fortunato | XDS Astana Team | s.t. |
| 76 | Martin López | XDS Astana Team | s.t. |
| 77 | Joan Bou | Caja Rural-Seguros RGA | s.t. |
| 78 | Juan Martinez | Team Picnic PostNL | s.t. |
| 79 | Louis Meintjes | Intermarché-Wanty | s.t. |
| 80 | Liam Slock | Lotto | 10:08 |
| 81 | Fabio Christen | Q36.5 Pro Cycling Team | 11:23 |
| 82 | Antonio Tiberi | Bahrain Victorious | 12:43 |
| 83 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | s.t. |
| 84 | José Luis Faura | Burgos Burpellet BH | s.t. |
| 85 | Jordan Labrosse | Decathlon AG2R La Mondiale | s.t. |
| 86 | Iván García Cortina | Movistar Team | s.t. |
| 87 | Bryan Coquard | Cofidis | s.t. |
| 88 | Pierre Thierry | Arkea-B&B Hotels | s.t. |
| 89 | Sander De Pestel | Decathlon AG2R La Mondiale | s.t. |
| 90 | Jonas Rickaert | Alpecin-Deceuninck | 15:40 |
| 91 | Jack Haig | Bahrain Victorious | s.t. |
| 92 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 93 | Mathijs Paasschens | Bahrain Victorious | s.t. |
| 94 | Simone Petilli | Intermarché-Wanty | s.t. |
| 95 | Domen Novak | UAE Team Emirates-XRG | s.t. |
| 96 | Thibaud Gruel | Groupama-FDJ | 15:50 |
| 97 | Louis Rouland | Arkea-B&B Hotels | s.t. |
| 98 | Max Schachmann | Soudal Quick-Step | 17:57 |
| 99 | Emanuel Buchmann | Cofidis | s.t. |
| 100 | Nans Peters | Decathlon AG2R La Mondiale | s.t. |
| 101 | Ben Turner | INEOS Grenadiers | s.t. |
| 102 | Roman Ermakov | Bahrain Victorious | s.t. |
| 103 | Jakub Otruba | Caja Rural-Seguros RGA | s.t. |
| 104 | Patrick Gamper | Team Jayco-AlUla | s.t. |
| 105 | Timo Roosen | Team Picnic PostNL | s.t. |
| 106 | David González | Q36.5 Pro Cycling Team | s.t. |
| 107 | Jenthe Biermans | Arkea-B&B Hotels | s.t. |
| 108 | Arne Marit | Intermarché-Wanty | s.t. |
| 109 | Nadav Raisberg | Israel-Premier Tech | s.t. |
| 110 | Wilco Kelderman | Team Visma | Lease a Bike | s.t. |
| 111 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 112 | Remi Cavagna | Groupama-FDJ | s.t. |
| 113 | Dion Smith | Intermarché-Wanty | s.t. |
| 114 | Pier-André Côté | Israel-Premier Tech | s.t. |
| 115 | Alessandro Verre | Arkea-B&B Hotels | s.t. |
| 116 | Clément Braz Afonso | Groupama-FDJ | s.t. |
| 117 | Tim van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 118 | Jay Vine | UAE Team Emirates-XRG | s.t. |
| 119 | Stanislaw Aniolkowski | Cofidis | s.t. |
| 120 | Alex Molenaar | Caja Rural-Seguros RGA | s.t. |
| 121 | Jefferson Cepeda | Movistar Team | s.t. |
| 122 | David Gaudu | Groupama-FDJ | s.t. |
| 123 | Lukas Nerurkar | EF Education-EasyPost | s.t. |
| 124 | Léandre Lozouet | Arkea-B&B Hotels | s.t. |
| 125 | Jake Stewart | Israel-Premier Tech | s.t. |
| 126 | Kevin Vermaerke | Team Picnic PostNL | s.t. |
| 127 | Thomas Silva | Caja Rural-Seguros RGA | s.t. |
| 128 | Orluis Aular | Movistar Team | s.t. |
| 129 | Ethan Vernon | Israel-Premier Tech | s.t. |
| 130 | Mikkel Bjerg | UAE Team Emirates-XRG | s.t. |
| 131 | Ivo Oliveira | UAE Team Emirates-XRG | s.t. |
| 132 | Wout Poels | XDS Astana Team | s.t. |
| 133 | Nicolas Vinokurov | XDS Astana Team | s.t. |
| 134 | Tobias Bayer | Alpecin-Deceuninck | s.t. |
| 135 | Jasper Philipsen | Alpecin-Deceuninck | s.t. |
| 136 | Elia Viviani | Lotto | s.t. |
| 137 | Matteo Sobrero | Red Bull-BORA-hansgrohe | s.t. |
| 138 | Filippo Ganna | INEOS Grenadiers | s.t. |
| 139 | Nicolò Buratti | Bahrain Victorious | s.t. |
| 140 | Nicola Conci | XDS Astana Team | s.t. |
| 141 | Joel Nicolau | Caja Rural-Seguros RGA | s.t. |
| 142 | Marcel Camprubí | Q36.5 Pro Cycling Team | s.t. |
| 143 | Xabier Azparren | Q36.5 Pro Cycling Team | s.t. |
| 144 | Hugo de la Calle | Burgos Burpellet BH | s.t. |
| 145 | Sergio Higuita | XDS Astana Team | s.t. |
| 146 | Sergio Chumil | Burgos Burpellet BH | s.t. |
| 147 | Kelland O'Brien | Team Jayco-AlUla | s.t. |
| 148 | Patrick Eddy | Team Picnic PostNL | s.t. |
| 149 | Jonas Gregaard | Lotto | s.t. |
| 150 | Christopher Juul-Jensen | Team Jayco-AlUla | s.t. |
| 151 | Anders Foldager | Team Jayco-AlUla | s.t. |
| 152 | Dries De Pooter | Intermarché-Wanty | s.t. |
| 153 | Oscar Riesebeek | Alpecin-Deceuninck | s.t. |
| 154 | Huub Artz | Intermarché-Wanty | s.t. |
| 155 | Daan Hoole | Lidl-Trek | s.t. |
| 156 | Dylan van Baarle | Team Visma | Lease a Bike | s.t. |
| 157 | Fernando Barceló | Caja Rural-Seguros RGA | s.t. |
| 158 | Jasper De Buyst | Lotto | s.t. |
| 159 | Edward Planckaert | Alpecin-Deceuninck | s.t. |
| 160 | Kamiel Bonneu | Intermarché-Wanty | s.t. |
| 161 | Søren Kragh Andersen | Lidl-Trek | 18:24 |
| 162 | Archie Ryan | EF Education-EasyPost | s.t. |
GC after stage 12:
1,898.5 kilometers raced so far at an average speed of 42.555 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 44hr 36min 45sec |
| 2 | João Almeida | UAE Team Emirates-XRG | @ 50sec |
| 3 | Tom Pidcock | Q36.5 Pro Cycling Team | 0:56 |
| 4 | Torstein Træen | Bahrain Victorious | 1:06 |
| 5 | Felix Gall | Decathlon AG2R La Mondiale | 2:17 |
| 6 | Bruno Armirail | Decathlon AG2R La Mondiale | 2:22 |
| 7 | Matteo Jorgenson | Team Visma | Lease a Bike | 2:26 |
| 8 | Jai Hindley | Red Bull-BORA-hansgrohe | 2:30 |
| 9 | Giulio Ciccone | Lidl-Trek | 2:33 |
| 10 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 2:44 |
| 11 | Matthew Riccitello | Israel-Premier Tech | 3:11 |
| 12 | Egan Bernal | INEOS Grenadiers | 3:23 |
| 13 | Junior Lecerf | Soudal Quick-Step | 4:34 |
| 14 | Sepp Kuss | Team Visma | Lease a Bike | 4:50 |
| 15 | Harold Tejada | XDS Astana Team | 6:11 |
| 16 | Martin López | XDS Astana Team | 7:46 |
| 17 | Louis Meintjes | Intermarché-Wanty | 9:14 |
| 18 | Jaume Guardeño | Caja Rural-Seguros RGA | 11:10 |
| 19 | Santiago Buitrago | Bahrain Victorious | 11:37 |
| 20 | Abel Balderstone | Caja Rural-Seguros RGA | 12:08 |
| 21 | Marc Soler | UAE Team Emirates-XRG | 15:43 |
| 22 | Rudy Molard | Groupama-FDJ | 16:01 |
| 23 | Lorenzo Fortunato | XDS Astana Team | 21:31 |
| 24 | Ben Tulett | Team Visma | Lease a Bike | 22:38 |
| 25 | Ben O'Connor | Team Jayco-AlUla | 22:45 |
| 26 | Brieuc Rolland | Groupama-FDJ | 23:59 |
| 27 | Mikel Landa | Soudal Quick-Step | 24:35 |
| 28 | Marco Frigo | Israel-Premier Tech | s.t. |
| 29 | Gianmarco Garofoli | Soudal Quick-Step | 32:14 |
| 30 | Javier Romo | Movistar Team | 32:55 |
| 31 | Damien Howson | Q36.5 Pro Cycling Team | 33:41 |
| 32 | Callum Scotson | Decathlon AG2R La Mondiale | 34:34 |
| 33 | Sergio Samitier | Cofidis | 35:15 |
| 34 | Jefferson Cepeda | Movistar Team | 35:35 |
| 35 | Markel Beloki | EF Education-EasyPost | 36:19 |
| 36 | Victor Campenaerts | Team Visma | Lease a Bike | 39:15 |
| 37 | Sergio Chumil | Burgos Burpellet BH | 39:33 |
| 38 | Louis Vervaeke | Soudal Quick-Step | 41:05 |
| 39 | Wout Poels | XDS Astana Team | 41:32 |
| 40 | Kevin Vermaerke | Team Picnic PostNL | 43:18 |
| 41 | Edward Dunbar | Team Jayco-AlUla | 45:14 |
| 42 | Andrea Bagioli | Lidl-Trek | 46:22 |
| 43 | Finlay Pickering | Bahrain Victorious | 46:33 |
| 44 | Brandon Rivera | INEOS Grenadiers | 48:05 |
| 45 | Julien Bernard | Lidl-Trek | 50:42 |
| 46 | Magnus Sheffield | INEOS Grenadiers | 51:02 |
| 47 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 51:28 |
| 48 | Felix Grossschartner | UAE Team Emirates-XRG | 51:55 |
| 49 | Victor Langellotti | INEOS Grenadiers | 52:06 |
| 50 | Antonio Tiberi | Bahrain Victorious | 53:34 |
| 51 | Carlos Canal | Movistar Team | 53:59 |
| 52 | Juan Ayuso | UAE Team Emirates-XRG | 55:14 |
| 53 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | 55:44 |
| 54 | Fausto Masnada | XDS Astana Team | 56:11 |
| 55 | Carlos Verona | Lidl-Trek | 57:09 |
| 56 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 57:21 |
| 57 | Michal Kwiatkowski | INEOS Grenadiers | 58:04 |
| 58 | Clément Braz Afonso | Groupama-FDJ | 58:42 |
| 59 | Sander De Pestel | Decathlon AG2R La Mondiale | 58:43 |
| 60 | Jay Vine | UAE Team Emirates-XRG | 59:00 |
| 61 | Chris Hamilton | Team Picnic PostNL | 1:00:35 |
| 62 | Lars Craps | Lotto | 1:02:06 |
| 63 | James Shaw | EF Education-EasyPost | 1:02:48 |
| 64 | Bob Jungels | INEOS Grenadiers | 1:03:36 |
| 65 | Mauri Vansevenant | Soudal Quick-Step | 1:05:31 |
| 66 | Pablo Castrillo | Movistar Team | 1:05:45 |
| 67 | Wilco Kelderman | Team Visma | Lease a Bike | 1:06:12 |
| 68 | Jan Hirt | Israel-Premier Tech | 1:07:25 |
| 69 | Nicola Conci | XDS Astana Team | 1:07:47 |
| 70 | Juan Martinez | Team Picnic PostNL | 1:07:53 |
| 71 | Stefan Küng | Groupama-FDJ | 1:08:26 |
| 72 | Thomas Silva | Caja Rural-Seguros RGA | 1:08:36 |
| 73 | Archie Ryan | EF Education-EasyPost | 1:09:00 |
| 74 | Michel Hessmann | Movistar Team | 1:09:46 |
| 75 | Eduardo Sepulveda | Lotto | 1:10:29 |
| 76 | Bjoern Koerdt | Team Picnic PostNL | 1:11:39 |
| 77 | Max Schachmann | Soudal Quick-Step | 1:11:54 |
| 78 | Sean Quinn | EF Education-EasyPost | 1:11:56 |
| 79 | Alex Molenaar | Caja Rural-Seguros RGA | 1:12:24 |
| 80 | José Luis Faura | Burgos Burpellet BH | 1:14:35 |
| 81 | Jesus Herrada | Cofidis | 1:15:38 |
| 82 | Pierre Thierry | Arkea-B&B Hotels | 1:15:43 |
| 83 | Léo Bisiaux | Decathlon AG2R La Mondiale | 1:16:52 |
| 84 | Sergio Higuita | XDS Astana Team | 1:17:11 |
| 85 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | 1:17:42 |
| 86 | David de la Cruz | Q36.5 Pro Cycling Team | 1:19:32 |
| 87 | David Gaudu | Groupama-FDJ | 1:19:49 |
| 88 | Gijs Leemreize | Team Picnic PostNL | 1:20:28 |
| 89 | Nans Peters | Decathlon AG2R La Mondiale | 1:21:41 |
| 90 | Roman Ermakov | Bahrain Victorious | 1:22:03 |
| 91 | Alec Segaert | Lotto | 1:25:56 |
| 92 | Jack Haig | Bahrain Victorious | 1:27:23 |
| 93 | Jordan Labrosse | Decathlon AG2R La Mondiale | 1:28:01 |
| 94 | Gal Glivar | Alpecin-Deceuninck | 1:29:19 |
| 95 | Nico Denz | Red Bull-BORA-hansgrohe | 1:30:08 |
| 96 | Orluis Aular | Movistar Team | 1:31:00 |
| 97 | Thibaud Gruel | Groupama-FDJ | 1:31:45 |
| 98 | Pier-André Côté | Israel-Premier Tech | 1:32:43 |
| 99 | Hugo de la Calle | Burgos Burpellet BH | 1:33:00 |
| 100 | Patrick Gamper | Team Jayco-AlUla | 1:33:58 |
| 101 | David González | Q36.5 Pro Cycling Team | 1:34:56 |
| 102 | Luca Van Boven | Intermarché-Wanty | 1:35:07 |
| 103 | Emanuel Buchmann | Cofidis | 1:35:35 |
| 104 | Joan Bou | Caja Rural-Seguros RGA | 1:36:12 |
| 105 | Jardi Van Der Lee | EF Education-EasyPost | 1:36:16 |
| 106 | Simone Petilli | Intermarché-Wanty | 1:36:45 |
| 107 | Joel Nicolau | Caja Rural-Seguros RGA | 1:36:49 |
| 108 | Jakub Otruba | Caja Rural-Seguros RGA | 1:37:18 |
| 109 | Iván García Cortina | Movistar Team | 1:37:52 |
| 110 | Louis Rouland | Arkea-B&B Hotels | 1:38:07 |
| 111 | Mads Pedersen | Lidl-Trek | 1:39:54 |
| 112 | Lukas Nerurkar | EF Education-EasyPost | 1:40:45 |
| 113 | Kelland O'Brien | Team Jayco-AlUla | 1:40:54 |
| 114 | Jonas Rickaert | Alpecin-Deceuninck | 1:43:27 |
| 115 | Jonas Gregaard | Lotto | 1:44:06 |
| 116 | Kamiel Bonneu | Intermarché-Wanty | 1:44:49 |
| 117 | Fernando Barceló | Caja Rural-Seguros RGA | 1:45:04 |
| 118 | Matteo Sobrero | Red Bull-BORA-hansgrohe | 1:45:43 |
| 119 | Mathijs Paasschens | Bahrain Victorious | 1:45:45 |
| 120 | Marcel Camprubí | Q36.5 Pro Cycling Team | 1:46:49 |
| 121 | Remi Cavagna | Groupama-FDJ | 1:46:56 |
| 122 | Nicolò Buratti | Bahrain Victorious | 1:47:15 |
| 123 | Madis Mihkels | EF Education-EasyPost | 1:49:16 |
| 124 | Fabio Christen | Q36.5 Pro Cycling Team | 1:49:38 |
| 125 | Christopher Juul-Jensen | Team Jayco-AlUla | 1:49:55 |
| 126 | Nicolas Vinokurov | XDS Astana Team | 1:50:35 |
| 127 | Dylan van Baarle | Team Visma | Lease a Bike | 1:50:37 |
| 128 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | 1:52:05 |
| 129 | Léandre Lozouet | Arkea-B&B Hotels | 1:52:41 |
| 130 | Tobias Bayer | Alpecin-Deceuninck | 1:53:28 |
| 131 | Ivo Oliveira | UAE Team Emirates-XRG | 1:53:46 |
| 132 | Ben Turner | INEOS Grenadiers | 1:54:08 |
| 133 | Bryan Coquard | Cofidis | 1:54:37 |
| 134 | Dries De Pooter | Intermarché-Wanty | 1:54:39 |
| 135 | Amanuel Ghebreigzabhier | Lidl-Trek | 1:55:41 |
| 136 | Huub Artz | Intermarché-Wanty | 1:56:05 |
| 137 | Dion Smith | Intermarché-Wanty | 1:56:09 |
| 138 | Mario Aparicio | Burgos Burpellet BH | 1:56:28 |
| 139 | Filippo Ganna | INEOS Grenadiers | 1:56:41 |
| 140 | Victor Guernalec | Arkea-B&B Hotels | 1:57:06 |
| 141 | Jasper De Buyst | Lotto | 2:00:04 |
| 142 | Mikkel Bjerg | UAE Team Emirates-XRG | 2:02:27 |
| 143 | Liam Slock | Lotto | 2:04:41 |
| 144 | Jake Stewart | Israel-Premier Tech | 2:07:06 |
| 145 | Timo Roosen | Team Picnic PostNL | 2:09:22 |
| 146 | Alessandro Verre | Arkea-B&B Hotels | 2:09:22 |
| 147 | Ethan Vernon | Israel-Premier Tech | 2:09:41 |
| 148 | Søren Kragh Andersen | Lidl-Trek | 2:09:53 |
| 149 | Edward Planckaert | Alpecin-Deceuninck | 2:09:57 |
| 150 | Xabier Azparren | Q36.5 Pro Cycling Team | 2:13:12 |
| 151 | Arne Marit | Intermarché-Wanty | 2:14:34 |
| 152 | Tim van Dijke | Red Bull-BORA-hansgrohe | 2:15:06 |
| 153 | Jenthe Biermans | Arkea-B&B Hotels | 2:16:27 |
| 154 | Nadav Raisberg | Israel-Premier Tech | 2:18:20 |
| 155 | Elia Viviani | Lotto | 2:18:57 |
| 156 | Daan Hoole | Lidl-Trek | 2:19:41 |
| 157 | Jasper Philipsen | Alpecin-Deceuninck | 2:20:21 |
| 158 | Anders Foldager | Team Jayco-AlUla | 2:20:44 |
| 159 | Domen Novak | UAE Team Emirates-XRG | 2:22:17 |
| 160 | Stanislaw Aniolkowski | Cofidis | 2:29:06 |
| 161 | Patrick Eddy | Team Picnic PostNL | 2:32:24 |
| 162 | Oscar Riesebeek | Alpecin-Deceuninck | 2:39:50 |
Stage 12 map & profile:

Stage 12 map

Stage 12 profile
Stage 12 photos by Fotoreporter Sirotti:

Groupama-FDJ riders before the stage start.

Early in the stage GC leader Jonas Vingegaard (in red) descends the Alisas surrounded by an escort of Visma teammates.

Javier Romo racing to second in the stage.

Juan Ayuso wins stage 12. Just on his wheel is 2nd-place Javier Romo.

Juan Ayuso just after finishing the stage.

GC leader Jonas Vingegaard just after the stage ended.

Points classification leader Mads Pedersen

Vuelta technical director Kiko García

Stage winner Juan Ayuso

Jonas Vingegaard will start stage 13 in red.