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.

Latest Videos From
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

Peter Stuart was editor of Cyclingnews from 2022 until 2025. 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 the 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