Vuelta a España stage 13: João Almeida holds off Jonas Vingegaard for win atop Angliru as duo battle on savagely-steep mountain
Jai Hindley accelerates in front of Sepp Kuss to grab third place

João Almeida (UAE Team Emirate-XRG) snatched stage victory from race leader Jonas Vingegaard (Visma-Lease a Bike) at the end of a stunning showcase of climbing ability on the brutal slopes of the Alto de l'Angliru as the two main red jersey contenders rode clear of the field on stage 13 of the Vuelta a España.
Almeida delivered considerable efforts on the long and infamously-steep ascent of the Angliru, riding Vingegaard off his back wheel on the final few hundred metres of the 12.5km ascent. It came after a relentless day which saw a surreal average speed of 41.6 kph on the 202.7km stage with over 4,000 metres of climbing.
Behind them, Jai Hindley (Red Bull-Bora-Hansgrohe) and Sepp Kuss (Visma-Lease a Bike) formed the main chase behind the two race leaders, after the main contenders group caught and swallowed the last survivor of the day's breakaway – Bob Jungels (Ineos Grenadiers) – on the slopes of the Angliru.
Hindley won the sprint for third, only marginally ousting Vingegaard's teammate Kuss in the final few hundred metres of the stage.
The steep inclines saw a savage splintering of the main contenders group, with Tom Pidcock (Q36.5 Pro Cycling) the most conspicuous victim of the Angliru's steep slopes, losing more than 70 seconds on the red jersey.
"Yes this is a special one, I still don't believe it," Almeida said following the race finish.
"Thanks to my teammates, they were key today," he said. "We did an amazing stage. I just put my pace from the bottom, and I just did the best I could. Jonathan was always on the wheel.
The latest race content, interviews, features, reviews and expert buying guides, direct to your inbox!
"The last kilometre was on the limits. I guess we're both on the limits. I was waiting for his attack anytime," he added. "I thought he might pass me in the finish line, but I knew the finish line from two years ago. So I took the last corner, and then it's hard to pass."
Reflecting on the infamous savagery of the climb, he said, "I think this is the hardest time in the world. It's crazy. I'm very sore."
Almedia was cautious with his red jersey aspirations. "I have a lot of time to make up to Jonas, but he's looking phenomenal, so I think it's going to be a hard task," he said. "But we never give up."
Almeida gained only four seconds in the overall classification, now 46 seconds down on the red jersey, while despite a palpable time loss for Pidcock, he remains in third at 2:18, ahead of Hindley, who has moved into fourth place at a gap of 3:00.
How it unfolded
Stage 13 of La Vuelta a España began in the shadow of that day's overbearing summit finale on the mythically steep slopes of the Angliru.
The 202.7km route began below cool clear skies in Cabezón de la Sal, with two first category summits sitting ahead of the brutal final ascent of Angliru.
Given the pressure, it was no surprise that attacks came thick and fast from the peloton, and within 20km a 25-man group had broken free, with Antonio Tiberi (Bahrain Victorious) and Mads Pedersen (Lidl-Trek) among their number.
A bridging group of Chris Hamilton (Team Picnic-PostNL, Thomas Gruel (Groupama - FDJ), Ivo Oliveira (UAE Team Emirates-XRG), and Jesus Herrada (Cofidis) set chase, with only Oliveira managing to join the front group.
Visma–Lease a Bike kept the breakaway within reach, with the break never swelling much beyond three minutes before the approach to Alto de la Mozqueta. Pressure was never relieved as the first three hours of racing took place at an average of over 50 kph.
The Alto de la Mozqueta's 6.6km at 8.4% was enough to splinter the breakaway group, with Ethan Vernon (Israel–Premier Tech) and Tim Van Dijke (Red Bull–Bora-Hansgrohe) amongst those who were dropped.
Over the summit of Alto de la Mozqueta, the leading fragments contained Jungels, Antonio Tiberi (Bahrain Victorious), Nicolas Vinokurov (XDS-Astana Team), Jefferson Cepeda (Movistar Team), and Gianmarco Garofoli (Soudal–QuickStep), while Pedersen managed a bold bridging effort to bring the breakaway to six.
Tiberi suffered an unfortunate mechanical that saw him drop from the front group inside the final 50km, on the approach to the Alto del Cordal. Meanwhile, a coordinated chase was initiated in the peloton as a gap of nearly four minutes was capped and the pressure began to trim the main group to just the general classification contenders and their lieutenants.
Having netted the green jersey points from the intermediate sprints, Pedersen seemed to have achieved his objective and dropped from the lead group with 27km remaining. Ahead of the penultimate climb of Alto del Cordal.
The breakaway split into a leading trio of Vinokurov, Cepeda, and Jungels. Meanwhile, Gianmarco Garofoli (Soudal–QuickStep) joined Tiberi in a chase group - though Tiberi's prospects were further damaged by a nasty crash on the descent from Alto del Cordal.
As the lead trio descended toward the foothills of the Angliru with an advantage of nearly three minutes, a set of protestors stopped racing on the descent of the Alto del Cordal, draining their advantage by around a minute.
Thankfully, racing quickly resumed, and the breakaway looked ahead of the savage slopes of the Angliru.
Angliru in anger
The day's breakaway, once 25 in number, was down to two by the time the Angliru began in true, as Cepeda was ejected from the group. Vinokourov and Jungels were left to fend off the charging group of general classification contenders.
With barely a minute of advantage at the base of the climb, the breakaway was trimmed down to just Jungels. His advantage was soon torn up by the elite selection of four red jersey hopefuls. The group of Hindley, Almeida, Kuss and Vingegaard caught and dropped Jungles outside 5km to go.
The one absent contender seemed to be Pidcock, who lost touch with the leading four briefly before the breakaway catch, forming a chase with Felix Gall (Decathlon AG2R La Mondiale Team) and Matthew Riccitello (Israel–Premier Tech) around 30 seconds back.
As the race approached the final 4km, a considerable turn of pace for Almeida saw Kuss and Hindley slip off the front of the race, as a metronomic pace seemed to visibly push red jersey Vingegaard to his limits.
The safe margin of 50 seconds from Vingegaard over Almeida suddenly seemed vulnerable on the nearly vertical hairpins of the Angliru and the relentless 20% inclines.
The gap from the leading duo to the Kuss and Hindley chase soon yawned to over thirty seconds, as Pidcock's gap swelled to over a minute, and his red jersey prospects seemed to slowly evaporate.
With 2km remaining, it was clear that the battle for the stage win was between Vingegaard and Almeida, and the only question was which would win, and what margins they would inflict on the riders trailing behind, now battling solely for the general classification podium.
Results
Position | Rider (Team) | Time Gap |
---|---|---|
1 | João Almeida (UAE Team Emirates) | 4:54:15 |
2 | Jonas Vingegaard Hansen (Team Visma | Lease a Bike) | +0:03 |
3 | Jai Hindley (Red Bull–BORA–hansgrohe) | +0:28 |
4 | Sepp Kuss (Team Visma | Lease a Bike) | +0:30 |
5 | Felix Gall (Decathlon AG2R La Mondiale Team) | +0:52 |
6 | Giulio Pellizzari (Red Bull–BORA–hansgrohe) | +1:11 |
7 | Tom Pidcock (Q36.5 Pro Cycling Team) | +1:16 |
8 | Matthew Riccitello (Israel–Premier Tech) | " |
9 | Giulio Ciccone (Lidl–Trek) | +2:15 |
10 | Abel Balderstone Roumens (Caja Rural–Seguros RGA) | +3:06 |
11 | Harold Alfonso Tejada Canacue (XDS Astana Team) | +3:43 |
12 | Felix Großschartner (UAE Team Emirates) | " |
13 | Junior Lecerf (Soudal Quick-Step) | " |
14 | Torstein Træen (Bahrain Victorious) | +4:09 |
15 | Guillermo Juan Martinez Huertas (Team Picnic PostNL) | +4:26 |
16 | Egan Arley Bernal Gomez (INEOS Grenadiers) | +4:32 |
17 | Matteo Jorgenson (Team Visma | Lease a Bike) | " |
18 | Jay Vine (UAE Team Emirates) | +6:12 |
19 | Jaume Guardeño Roma (Caja Rural–Seguros RGA) | +6:47 |
20 | Louis Du Bouisson Meintjes (Intermarché–Wanty) | " |
21 | Bob Jungels (INEOS Grenadiers) | +7:07 |
22 | Nicolya Vinokurov (XDS Astana Team) | +7:14 |
23 | Kevin Vermaerke (Team Picnic PostNL) | +7:57 |
24 | Jefferson Cepeda (Movistar Team) | +8:03 |
25 | Wouter Poels (XDS Astana Team) | +8:18 |
26 | Juan Pedro Lopez Perez (Lidl–Trek) | " |
27 | Edward Dunbar (Team Jayco AlUla) | +9:11 |
28 | Bruno Armirail (Decathlon AG2R La Mondiale Team) | +9:35 |
29 | Antonio Tiberi (Bahrain Victorious) | +10:38 |
30 | Gianmarco Garofoli (Soudal Quick-Step) | +10:56 |
31 | José Luis Faura Asensio (Burgos–BH) | +11:07 |
32 | Mikel Landa Meana (Soudal Quick-Step) | +11:51 |
33 | Rudy Molard (Groupama–FDJ) | +12:17 |
34 | Johannes Staune-Mittet (Decathlon AG2R La Mondiale Team) | +12:34 |
35 | Clément Braz Afonso (Groupama–FDJ) | +12:36 |
36 | Guillermo Thomas Silva Coussan (Caja Rural–Seguros RGA) | +13:58 |
37 | Jonas Gregaard Wilsly (Lotto) | +16:00 |
38 | Edward Planckaert (Alpecin-Deceuninck) | +16:59 |
39 | Ben Zwiehoff (Red Bull–BORA–hansgrohe) | " |
40 | Andrea Bagioli (Lidl–Trek) | +17:16 |
41 | Julien Bernard (Lidl–Trek) | +17:29 |
42 | Hugo De la Calle Arango (Burgos–BH) | " |
43 | Marco Frigo (Israel–Premier Tech) | +17:41 |
44 | Jan Hirt (Israel–Premier Tech) | +17:42 |
45 | Pierre Thierry (Arkéa–B&B Hotels) | +17:47 |
46 | David Gonzalez Lopez (Q36.5 Pro Cycling Team) | +18:03 |
47 | Marc Soler (UAE Team Emirates) | +18:15 |
48 | Huub Artz (Intermarché–Wanty) | " |
49 | Jack Haig (Bahrain Victorious) | " |
50 | Victor Langellotti (INEOS Grenadiers) | " |
51 | Damien Craig Howson (Q36.5 Pro Cycling Team) | +18:30 |
52 | Léandre Lozouet (Arkéa–B&B Hotels) | +18:52 |
53 | Xavier Finlay Pickering (Bahrain Victorious) | " |
54 | Gijs Leemreize (Team Picnic PostNL) | " |
55 | Ivo Emanuel Alves Oliveira (UAE Team Emirates) | +19:05 |
56 | Lorenzo Fortunato (XDS Astana Team) | +19:55 |
57 | Santiago Buitrago Sanchez (Bahrain Victorious) | +20:05 |
58 | Ben Tulett (Team Visma | Lease a Bike) | +20:10 |
59 | Fausto Masnada (XDS Astana Team) | +20:12 |
60 | Carlos Verona Quintanilla (Lidl–Trek) | +20:26 |
61 | Léo Bisiaux (Decathlon AG2R La Mondiale Team) | " |
62 | Victor Campenaerts (Team Visma | Lease a Bike) | +20:42 |
63 | Finn Lachlan Fox Fisher-Black (Red Bull–BORA–hansgrohe) | +20:51 |
64 | Ivan Garcia Cortina (Movistar Team) | +21:27 |
65 | Jonas Rickaert (Alpecin-Deceuninck) | " |
66 | Michel Heßmann (Movistar Team) | +22:38 |
67 | Roman Ermakov (Bahrain Victorious) | +23:16 |
68 | Marcel Camprubi Pijuan (Q36.5 Pro Cycling Team) | " |
69 | Mathijs Paasschens (Bahrain Victorious) | " |
70 | Amanuel Ghebreigzabhier (Lidl–Trek) | +23:22 |
71 | Maximilian Schachmann (Soudal Quick-Step) | " |
72 | Emanuel Buchmann (Cofidis) | " |
73 | Jakub Otruba (Caja Rural–Seguros RGA) | +23:26 |
74 | Sergio Samitier Samitier (Cofidis) | +24:15 |
75 | Jordan Labrosse (Decathlon AG2R La Mondiale Team) | +25:03 |
76 | Rémi Cavagna (Groupama–FDJ) | +25:07 |
77 | Alex Molenaar (Caja Rural–Seguros RGA) | +25:16 |
78 | Callum Scotson (Decathlon AG2R La Mondiale Team) | +25:31 |
79 | Nicolo' Buratti (Bahrain Victorious) | " |
80 | Nickolas Zukowsky (Q36.5 Pro Cycling Team) | +25:42 |
81 | Brandon Smith Rivera Vargas (INEOS Grenadiers) | +25:50 |
82 | Domen Novak (UAE Team Emirates) | +25:56 |
83 | Juul Christopher Jensen (Team Jayco AlUla) | +26:04 |
84 | Christopher Hamilton (Team Picnic PostNL) | +26:15 |
85 | Louis Vervaeke (Soudal Quick-Step) | +26:19 |
86 | Mauri Vansevenant (Soudal Quick-Step) | +26:29 |
87 | Kelland O’Brien (Team Jayco AlUla) | +26:39 |
88 | Gal Glivar (Alpecin-Deceuninck) | " |
89 | Nans Peters (Decathlon AG2R La Mondiale Team) | +26:48 |
90 | Juan Ayuso Pesquera (UAE Team Emirates) | +26:51 |
91 | Mario Aparicio Muñoz (Burgos–BH) | +27:05 |
92 | David Gaudu (Groupama–FDJ) | +27:28 |
93 | Brieuc Rolland (Groupama–FDJ) | " |
94 | Thibaud Gruel (Groupama–FDJ) | " |
95 | Markel Beloki Fernandez (EF Education–EasyPost) | " |
96 | Simone Petilli (Intermarché–Wanty) | " |
97 | Stefan Küng (Groupama–FDJ) | +27:38 |
98 | Lukas Nerurkar (EF Education–EasyPost) | +27:49 |
99 | Eduardo Sepulveda (Lotto) | " |
100 | Liam Slock (Lotto) | +27:54 |
101 | Victor Guernalec (Arkéa–B&B Hotels) | +27:58 |
102 | Sean Quinn (EF Education–EasyPost) | +28:20 |
103 | Anders Foldager (Team Jayco AlUla) | +28:22 |
104 | Jesus Herrada (Cofidis) | +28:36 |
105 | Wilco Kelderman (Team Visma | Lease a Bike) | " |
106 | Bjoern Koerdt (Team Picnic PostNL) | +29:03 |
107 | Patrick Gamper (Team Jayco AlUla) | " |
108 | Sander De Pestel (Decathlon AG2R La Mondiale Team) | " |
109 | David De la Cruz Melgarejo (Q36.5 Pro Cycling Team) | +29:17 |
110 | Xabier Mikel Azparren Irurzun (Q36.5 Pro Cycling Team) | " |
111 | Javier Romo Oliver (Movistar Team) | " |
112 | Sergio Andres Higuita Garcia (XDS Astana Team) | " |
113 | Jardi Christiaan Van Der Lee (EF Education–EasyPost) | +29:27 |
114 | Lars Craps (Lotto) | +29:40 |
115 | Nicola Conci (XDS Astana Team) | +29:44 |
116 | Dion Allan Smith (Intermarché–Wanty) | +30:31 |
117 | Orluis Alberto Aular Sanabria (Movistar Team) | " |
118 | Carlos Canal Blanco (Movistar Team) | +30:52 |
119 | Madis Mihkels (EF Education–EasyPost) | +31:13 |
120 | James Shaw (EF Education–EasyPost) | +31:41 |
121 | Nico Denz (Red Bull–BORA–hansgrohe) | +32:27 |
122 | Tim Van Dijke (Red Bull–BORA–hansgrohe) | +32:29 |
123 | Matteo Sobrero (Red Bull–BORA–hansgrohe) | " |
124 | Filippo Ganna (INEOS Grenadiers) | " |
125 | Giovanni Aleotti (Red Bull–BORA–hansgrohe) | " |
126 | Jasper De Buyst (Lotto) | " |
127 | Tobias Bayer (Alpecin-Deceuninck) | " |
128 | Jasper Philipsen (Alpecin-Deceuninck) | " |
129 | Alec Segaert (Lotto) | " |
130 | Patrick Eddy (Team Picnic PostNL) | " |
131 | Kamiel Bonneu (Intermarché–Wanty) | +32:50 |
132 | Bryan Coquard (Cofidis) | +33:53 |
133 | Luca Van Boven (Intermarché–Wanty) | +34:01 |
134 | Joan Bou Company (Caja Rural–Seguros RGA) | +34:06 |
135 | Joel Nicolau Beltran (Caja Rural–Seguros RGA) | " |
136 | Alessandro Verre (Arkéa–B&B Hotels) | +34:09 |
137 | Arne Marit (Intermarché–Wanty) | +34:30 |
138 | Jenthe Biermans (Arkéa–B&B Hotels) | " |
139 | Louis Rouland (Arkéa–B&B Hotels) | +34:32 |
140 | Dylan Van Baarle (Team Visma | Lease a Bike) | +35:10 |
141 | Magnus Sheffield (INEOS Grenadiers) | +35:12 |
142 | Fabio Christen (Q36.5 Pro Cycling Team) | +35:33 |
143 | Mikkel Norsgaard Bjerg (UAE Team Emirates) | +35:55 |
144 | Daan Hoole (Lidl–Trek) | " |
145 | Ben Turner (INEOS Grenadiers) | " |
146 | Nadav Raisberg (Israel–Premier Tech) | " |
147 | Michal Kwiatkowski (INEOS Grenadiers) | " |
148 | Pier-André Côté (Israel–Premier Tech) | " |
149 | Timo Roosen (Team Picnic PostNL) | " |
150 | Ethan Kane Vernon (Israel–Premier Tech) | " |
151 | Dries De Pooter (Intermarché–Wanty) | +36:07 |
152 | Thomas Jake Stewart (Israel–Premier Tech) | " |
153 | Elia Viviani (Lotto) | +36:18 |
154 | Oscar Riesebeek (Alpecin-Deceuninck) | +36:23 |
155 | Stanislaw Aniolkowski (Cofidis) | +36:35 |
156 | Mads Pedersen (Lidl–Trek) | +37:27 |

Peter Stuart has been the editor of Cyclingnews since March 2022, overseeing editorial output across all of Cyclingnews' digital touchpoints.
Before joining Cyclingnews, Peter was the digital editor of Rouleur magazine. Starting life as a freelance feature writer, with bylines in The Times and The Telegraph, he first entered cycling journalism in 2012, joining Cyclist magazine as staff writer. Peter has a background as an international rower, representing Great Britain at Under-23 level and at the Junior Rowing World Championships.
You must confirm your public display name before commenting
Please logout and then login again, you will then be prompted to enter your display name.
Latest on Cyclingnews
-
'João deserved to win today' - Vuelta a España leader Jonas Vingegaard searches for positives after narrowly losing to key rival Almeida on Angliru
Dane distances other contenders but recognises major battle remains with Portuguese stage winner -
'I've broken numerous power records this Vuelta a España' – Tom Pidcock gets dropped but battles to maintain GC podium spot up 'unforgiving' Angliru
'Whatever happens, we can build with confidence for more future goals like this' says coach to Cyclingnews as Brit finishes seventh on stage 13 -
'João showed he can beat Jonas' - Almeida keeps Vuelta a España GC battle alive with defeat of Vingegaard on Angliru
Portuguese rider outsprints Dane at summit for UAE Team Emirates-XRG's sixth stage win of 2025 race -
How to watch UCI Mountain Bike World Championships 2025: Live streams, TV broadcasts, schedule
Here's how you can catch all the action in Switzerland from downhill to cross-country