Vuelta a España standings 2025 – Final general classification after stage 21

ALTO DE EL MORREDERO, SPAIN - SEPTEMBER 10: Jonas Vingegaard of Denmark and Team Visma | Lease a Bike - Red Leader Jersey celebrates at podium during the La Vuelta - 80th Tour of Spain 2025, Stage 17 a 143.2km stage from O Barco de Valdeorras to Alto de El Morredero 1755m / #UCIWT / on September 10, 2025 in Alto de El Morredero, Spain. (Photo by Tim de Waele/Getty Images)
Jonas Vingegaard in the red jersey (Image credit: Getty Images)

The final stage of the 2025 Vuelta a España, Stage 21, saw Jonas Vingegaard (Visma–Lease a Bike) locked in as the final overall winner of the race.

In the end, the final stage had to be called off as pro-Palestine protestors, who have disrupted this Vuelta on several occasions, entered the race route in the centre of Madrid and blocked the roads.

That meant that, a little earlier than planned, Vingegaard was confirmed as the winner of the 2025 Vuelta a España.

Vingegaard wins the Vuelta a España at an advantage of 1:16 over the runner-up João Almeida (UAE Team Emirates-XRG). Tom Pidcock (Q36.5 Pro Cycling Team) rounds out the podium at 3:11.

There were no changes anywhere on GC. Jai Hindley (Red Bull–Bora–Hansgrohe) finishes in fourth place at 3:41, with best young rider Matthew Riccitello (Israel-Premier Tech) fifth at 5:55.

Giulio Pellizzari (Red Bull–Bora–Hansgrohe) is sixth 7:23 back, with Sepp Kuss (Visma-Lease a Bike) seventh 7:45 and Felix Gall (Decathlon AG2R La Mondiale) eighth at 7:50.

Rounding out the top 10 are Torstein Træen (Bahrain Victorious) and Matteo Jorgenson (Visma–Lease a Bike), at 9:48 and 12:16, respectively.

Subscribe to Cyclingnews for unlimited access to our 2025 Vuelta a España coverage. Our team of journalists are on the ground from the Gran Salida in Italy through to Madrid, bringing you breaking news, analysis, and more, from every stage of the Grand Tour as it happens. Find out more.

Vuelta a España 2025 GC standings

Swipe to scroll horizontally
Vuelta a España general classification

Position

Rider (Team)

Time Gap

1

Jonas Vingegaard (Team Visma | Lease a Bike)

72h 53' 57"

2

Joao Almeida (UAE Team Emirates-XRG)

+ 01' 16"

3

Tom Pidcock (Q36.5 Pro Cycling Team)

+ 03' 11"

4

Jai Hindley (Red Bull–BORA–hansgrohe)

+ 03' 41"

5

Matthew Riccitello (Israel–Premier Tech)

+ 05' 55"

6

Giulio Pellizzari (Red Bull–BORA–hansgrohe)

+ 07' 23"

7

Sepp Kuss (Team Visma | Lease a Bike)

+ 07' 45"

8

Félix Gall (Decathlon AG2R La Mondiale Team)

+ 07' 50"

9

Torstein Træen (Bahrain Victorious)

+ 09' 48"

10

Matteo Jorgenson (Team Visma | Lease a Bike)

+ 12' 16"

11

Junior Lecerf (Soudal Quick-Step)

+ 14' 00"

12

Harold Tejada (XDS Astana Team)

+ 21' 31"

13

Abel Balderstone Roumens (Caja Rural–Seguros RGA)

+ 28' 07"

14

Jaume Guardeño Roma (Caja Rural–Seguros RGA)

+ 30' 30"

15

Santiago Buitrago (Bahrain Victorious)

+ 45' 38"

16

Louis Meintjes (Intermarché–Wanty)

+ 45' 39"

17

Egan Bernal (Ineos Grenadiers)

+ 46' 26"

18

Giulio Ciccone (Lidl–Trek)

+ 48' 17"

19

Bruno Armirail (Decathlon AG2R La Mondiale Team)

+ 48' 30"

20

Kevin Vermaerke (Team Picnic PostNL)

+ 50' 08"

21

Edward Dunbar (Team Jayco AlUla)

+ 57' 19"

22

Harold Martin Lopez Granizo (XDS Astana Team)

+ 59' 23"

23

Rudy Molard (Groupama–FDJ)

+ 01h 00' 51"

24

Ben Tulett (Team Visma | Lease a Bike)

+ 01h 04' 46"

25

Felix Grossschartner (UAE Team Emirates Gen-Z)

+ 01h 09' 30"

26

Marc Soler (UAE Team Emirates Gen-Z)

+ 01h 11' 14"

27

Mikel Landa (Soudal Quick-Step)

+ 01h 18' 26"

28

Damien Craig Howson (Q36.5 Pro Cycling Team)

+ 01h 19' 07"

29

Xavier Finlay Xavier Pickering (Bahrain Victorious)

+ 01h 22' 02"

30

Jay Vine (UAE Team Emirates Gen-Z)

+ 01h 27' 41"

31

Sergio Samitier Samitier (Cofidis)

+ 01h 33' 20"

32

Marco Frigo (Israel–Premier Tech)

+ 01h 34' 17"

33

Julien Bernard (Lidl–Trek)

+ 01h 39' 06"

34

Jefferson Cepeda (Movistar Team)

+ 01h 43' 22"

35

Clément Braz Afonso (Groupama–FDJ)

+ 01h 43' 34"

36

Wouter Poels (XDS Astana Team)

+ 01h 48' 56"

37

Louis Vervaeke (Soudal Quick-Step)

+ 01h 50' 12"

38

Andrea Bagioli (Lidl–Trek)

+ 01h 57' 31"

39

Pierre Thierry (Arkéa–B&B Hotels)

+ 01h 59' 17"

40

Fausto Masnada (XDS Astana Team)

+ 02h 01' 00"

41

Antonio Tiberi (Bahrain Victorious)

+ 02h 01' 24"

42

Johannes Staune-Mittet (Decathlon AG2R La Mondiale Team)

+ 02h 01' 41"

43

Jan Hirt (Israel–Premier Tech)

+ 02h 01' 43"

44

Bob Jungels (Ineos Grenadiers)

+ 02h 04' 14"

45

Brieuc Rolland (Groupama–FDJ)

+ 02h 04' 21"

46

Callum Scotson (Decathlon AG2R La Mondiale Team)

+ 02h 09' 37"

47

Jose Luis Faura Asensio (Burgos–BH)

+ 02h 13' 57"

48

Lorenzo Fortunato (XDS Astana Team)

+ 02h 15' 02"

49

Gijs Leemreize (Team Picnic PostNL)

+ 02h 16' 48"

50

Markel Beloki (EF Education–EasyPost)

+ 02h 21' 45"

51

Ben Zwiehoff (Red Bull–BORA–hansgrohe)

+ 02h 22' 31"

52

Léo Bisiaux (Decathlon AG2R La Mondiale Team)

+ 02h 22' 33"

53

Christopher Hamilton (Team Picnic PostNL)

+ 02h 25' 56"

54

Guillermo Juan Martinez Huertas (Team Picnic PostNL)

+ 02h 27' 08"

55

Carlos Canal Blanco (Movistar Team)

+ 02h 28' 38"

56

Giovanni Aleotti (Red Bull–BORA–hansgrohe)

+ 02h 28' 38"

57

Lars Craps (Lotto)

+ 02h 29' 14"

58

Eduardo Sepulveda (Lotto)

+ 02h 30' 57"

59

Victor Langellotti (Ineos Grenadiers)

+ 02h 32' 10"

60

Carlos Verona (Lidl–Trek)

+ 02h 32' 57"

61

Sander De Pestel (Decathlon AG2R La Mondiale Team)

+ 02h 33' 33"

62

Wilco Kelderman (Team Visma | Lease a Bike)

+ 02h 38' 47"

63

Hugo De La Calle Arango (Burgos–BH)

+ 02h 42' 30"

64

Joan Bou Company (Caja Rural–Seguros RGA)

+ 02h 43' 12"

65

Magnus Sheffield (Ineos Grenadiers)

+ 02h 44' 56"

66

James Shaw (EF Education–EasyPost)

+ 02h 46' 06"

67

David Gonzalez Lopez (Q36.5 Pro Cycling Team)

+ 02h 47' 42"

68

Juan Ayuso (UAE Team Emirates Gen-Z)

+ 02h 47' 57"

69

Sergio Geovani Chumil Gonzalez (Burgos–BH)

+ 02h 49' 38"

70

Alex Molenaar (Caja Rural–Seguros RGA)

+ 02h 50' 43"

71

Nicola Conci (XDS Astana Team)

+ 02h 51' 32"

72

Michel Heßmann (Movistar Team)

+ 02h 51' 52"

73

Mauri Vansevenant (Soudal Quick-Step)

+ 02h 53' 37"

74

Maximilian Schachmann (Soudal Quick-Step)

+ 02h 54' 04"

75

Sean Quinn (EF Education–EasyPost)

+ 02h 55' 04"

76

Stefan Küng (Groupama–FDJ)

+ 02h 55' 41"

77

Jesus Herrada (Cofidis)

+ 02h 56' 36"

78

Guillermo Thomas Silva Coussan (Caja Rural–Seguros RGA)

+ 02h 58' 10"

79

Roman Ermakov (Bahrain Victorious)

+ 02h 58' 48"

80

Jack Haig (Bahrain Victorious)

+ 02h 59' 42"

81

Brandon Smith Rivera Vargas (Ineos Grenadiers)

+ 03h 01' 23"

82

Mathijs Paasschens (Bahrain Victorious)

+ 03h 01' 46"

83

Michal Kwiatkowski (Ineos Grenadiers)

+ 03h 02' 25"

84

Finn Fisher-Black (Red Bull–BORA–hansgrohe)

+ 03h 05' 04"

85

Jordan Labrosse (Decathlon AG2R La Mondiale Team)

+ 03h 09' 59"

86

Nans Peters (Decathlon AG2R La Mondiale Team)

+ 03h 10' 09"

87

Nico Denz (Red Bull–BORA–hansgrohe)

+ 03h 10' 43"

88

Orluis Alberto Aular Sanabria (Movistar Team)

+ 03h 11' 02"

89

Jonas Wilsly (Lotto)

+ 03h 11' 10"

90

Jakub Otruba (Caja Rural–Seguros RGA)

+ 03h 12' 26"

91

Mario Aparicio Muñoz (Burgos–BH)

+ 03h 12' 44"

92

Bjoern Koerdt (Team Picnic PostNL)

+ 03h 13' 49"

93

Jardi Christiaan Van Der Lee (EF Education–EasyPost)

+ 03h 14' 12"

94

Kelland O’Brien (Team Jayco AlUla)

+ 03h 14' 30"

95

Simone Petilli (Intermarché–Wanty)

+ 03h 15' 26"

96

Alec Segaert (Lotto)

+ 03h 16' 15"

97

David Gaudu (Groupama–FDJ)

+ 03h 16' 55"

98

Emanuel Buchmann (Cofidis)

+ 03h 17' 06"

99

Louis Rouland (Arkéa–B&B Hotels)

+ 03h 17' 20"

100

Patrick Gamper (Team Jayco AlUla)

+ 03h 18' 44"

101

Gal Glivar (Alpecin–Deceuninck)

+ 03h 19' 37"

102

David De La Cruz (Q36.5 Pro Cycling Team)

+ 03h 21' 52"

103

Thibaud Gruel (Groupama–FDJ)

+ 03h 24' 03"

104

Lukas Nerurkar (EF Education–EasyPost)

+ 03h 24' 13"

105

Nicolya Vinokurov (XDS Astana Team)

+ 03h 26' 40"

106

Jonas Rickaert (Alpecin–Deceuninck)

+ 03h 28' 01"

107

Ivan Garcia Cortina (Movistar Team)

+ 03h 28' 55"

108

Pier-André Côté (Israel–Premier Tech)

+ 03h 31' 36"

109

Ivo Oliveira (UAE Team Emirates Gen-Z)

+ 03h 31' 41"

110

Christopher Juul-Jensen (Team Jayco AlUla)

+ 03h 32' 28"

111

Joel Nicolau Beltran (Caja Rural–Seguros RGA)

+ 03h 36' 13"

112

Nickolas Zukowsky (Q36.5 Pro Cycling Team)

+ 03h 38' 01"

113

Alessandro Verre (Arkéa–B&B Hotels)

+ 03h 38' 20"

114

Marcel Camprubi Pijuan (Q36.5 Pro Cycling Team)

+ 03h 39' 36"

115

Kamiel Bonneu (Intermarché–Wanty)

+ 03h 40' 58"

116

Huub Artz (Intermarché–Wanty)

+ 03h 42' 02"

117

Nicolo' Buratti (Bahrain Victorious)

+ 03h 42' 13"

118

Luca Van Boven (Intermarché–Wanty)

+ 03h 42' 14"

119

Edward Planckaert (Alpecin–Deceuninck)

+ 03h 44' 23"

120

Léandre Lozouet (Arkéa–B&B Hotels)

+ 03h 49' 26"

121

Victor Guernalec (Arkéa–B&B Hotels)

+ 03h 52' 49"

122

Matteo Sobrero (Red Bull–BORA–hansgrohe)

+ 03h 53' 01"

123

Dion Allan Smith (Intermarché–Wanty)

+ 03h 53' 08"

124

Rémi Cavagna (Groupama–FDJ)

+ 03h 55' 18"

125

Mads Pedersen (Lidl–Trek)

+ 03h 56' 59"

126

Madis Mihkels (EF Education–EasyPost)

+ 04h 00' 51"

127

Ben Turner (Ineos Grenadiers)

+ 04h 06' 04"

128

Dries De Pooter (Intermarché–Wanty)

+ 04h 07' 09"

129

Jake Stewart (Israel–Premier Tech)

+ 04h 08' 08"

130

Dylan Van Baarle (Team Visma | Lease a Bike)

+ 04h 08' 16"

131

Filippo Ganna (Ineos Grenadiers)

+ 04h 08' 59"

132

Tobias Bayer (Alpecin–Deceuninck)

+ 04h 10' 00"

133

Fabio Christen (Q36.5 Pro Cycling Team)

+ 04h 11' 52"

134

Liam Slock (Lotto)

+ 04h 11' 58"

135

Amanuel Ghebreigzabhier (Lidl–Trek)

+ 04h 13' 29"

136

Bryan Coquard (Cofidis)

+ 04h 15' 14"

137

Timo Roosen (Team Picnic PostNL)

+ 04h 20' 23"

138

Tim Van Dijke (Red Bull–BORA–hansgrohe)

+ 04h 20' 23"

139

Mikkel Norsgaard Bjerg (UAE Team Emirates Gen-Z)

+ 04h 20' 41"

140

Jasper De Buyst (Lotto)

+ 04h 21' 15"

141

Nadav Raisberg (Israel–Premier Tech)

+ 04h 24' 53"

142

Ethan Kane Vernon (Israel–Premier Tech)

+ 04h 31' 47"

143

Jenthe Biermans (Arkéa–B&B Hotels)

+ 04h 32' 15"

144

Domen Novak (UAE Team Emirates Gen-Z)

+ 04h 32' 39"

145

Jasper Philipsen (Alpecin–Deceuninck)

+ 04h 35' 03"

146

Arne Marit (Intermarché–Wanty)

+ 04h 36' 51"

147

Anders Foldager (Team Jayco AlUla)

+ 04h 43' 01"

148

Soren Kragh Andersen (Lidl–Trek)

+ 04h 43' 07"

149

Daan Hoole (Lidl–Trek)

+ 04h 44' 12"

150

Elia Viviani (Lotto)

+ 04h 44' 32"

151

Patrick Eddy (Team Picnic PostNL)

+ 04h 54' 07"

152

Stanislaw Aniolkowski (Cofidis)

+ 04h 57' 02"

153

Oscar Riesebeek (Alpecin–Deceuninck)

+ 05h 08' 37"

Vuelta a España 2025 Classifications

Here's a rundown of all of the classifications at the Vuelta a España.

Maillot Rojo/Red Jersey –The red jersey is worn by the overall race leader on the general classification who has completed the stages so far in the lowest accumulated time.
Winner: Jonas Vingegaard (Visma-Lease a Bike)

Maillot Verde/Green Jersey – The green jersey is the points classification. Points are awarded to riders at the intermediate sprints and stage finishes. The rider with the most points leads the ranking.
Winner: Mads Pedersen (LIdl-Trek)

Maillot de Lunares/Polka Dot Jersey – The blue and white polka dot jersey is the mountains classification. Points are awarded to the first riders over certain hills and climbs during the stage, with the hardest mountains giving the most points. Once again, the rider with the most points leads the ranking.
Winner: Jay Vine (UAE Team Emirates-XRG)

Maillot Blanco/White Jersey – The white jersey is the youth classification. It works the same way as the yellow jersey, but only riders aged 25 or under are eligible to win.
Winner: Matthew Riccitello (Israel-Premier Tech).

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.