Vuelta a España stage 13: João Almeida holds off Jonas Vingegaard for win atop Angliru as duo battle on savagely-steep mountain

L'ANGLIRU, SPAIN - SEPTEMBER 05: (L-R) Joao Almeida of Portugal and UAE Team Emirates - XRG crosses the finish line as stage winner ahead of Jonas Vingegaard of Denmark and Team Visma | Lease a Bike - Red Leader Jersey during the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in L'Angliru, Spain. (Photo by Tim de Waele/Getty Images)
Vuelta a España 2025: João Almeida (UAE Team Emirates-XRG) wins stage 13 atop Angliru ahead of race leader Jonas Vingegaard (Visma-Lease a Bike) (Image credit: Tim de Waele/Getty Images)

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.

Second placed, overall leader of the Team Visma-Lease a Bike, Danish rider Jonas Vingegaard, is pictured after the 13th stage of the Vuelta a Espana, a 202 km race between Cabezon de la Sal and L'Angliru, on September 5, 2025. (Photo by Miguel RIOPA / AFP)

Expression of effort made by race leader Jonas Vingegaard, with second place on the stage (Image credit: Getty Images)

"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 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

CABEZON DE LA SAL, SPAIN - SEPTEMBER 05: (L-R) Jay Vine of Australia and UAE Team Emirates - XRG - Polka Dot Mountain Jersey, Jonas Vingegaard of Denmark and Team Visma | Lease a Bike - Red Leader Jersey, Mads Pedersen of Denmark and Team Lidl - Trek - Green Points Jersey while pro-Palestinians protest prior to the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in Cabezon de la Sal, Spain. (Photo by Dario Belingheri/Getty Images)

Stage 13 start at Cabezon de la Sal (L to R): Jay Vine of UAE Team Emirates-XRG in the Polka Dot Mountain Jersey, Jonas Vingegaard of Visma-Lease a Bike in the Red Leader Jersey, Mads Pedersen of Lidl-Trek in the Green Points Jersey (Image credit: Getty Images)

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.

L'ANGLIRU, SPAIN - SEPTEMBER 05: Jonas Vingegaard of Denmark and Team Visma | Lease a Bike - Red Leader Jersey competes during the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in L'Angliru, Spain. (Photo by Dario Belingheri/Getty Images)

Jonas Vingegaard kept safe by his Visma teammates (Image credit: Getty Images)

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

L'ANGLIRU, SPAIN - SEPTEMBER 05: A general view of the L'Angliru final hill during the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in L'Angliru, Spain. (Photo by Tim de Waele/Getty Images)

A general view of L'Angliru (Image credit: Tim de Waele/Getty Images)

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.

L'ANGLIRU, SPAIN - SEPTEMBER 05: Bob Jungels of Luxembourg and Team INEOS Grenadiers attacks in the breakaway during the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in L'Angliru, Spain. (Photo by Dario Belingheri/Getty Images)

Bob Jungels of Ineos Grenadiers attacks in the breakaway (Image credit: Getty Images)

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.

L'ANGLIRU, SPAIN - SEPTEMBER 05: (L-R) Jonas Vingegaard of Denmark and Team Visma | Lease a Bike - Red Leader Jersey and stage winner Joao Almeida of Portugal and UAE Team Emirates - XRG compete climbing to the L'Angliru while fans cheer during the La Vuelta - 80th Tour of Spain 2025, Stage 13 a 203.7km stage from Cabezon de la Sal to L'Angliru 1556m / #UCIWT / on September 05, 2025 in L'Angliru, Spain. (Photo by Dario Belingheri/Getty Images)

Lead duo of Jonas Vingegaard (Visma-Lease a Bike), in the Red Leader Jersey, and João Almeida (UAE Team Emirates-XRG) compete on the L'Angliru (Image credit: Getty Images)

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

Swipe to scroll horizontally
Vuelta a España stage 13

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
Editor

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