# 2021 Vuelta a España, Stage 12 to Stage 21

The 2021 Vuelta a España was the 76th edition of Vuelta a España, one of cycling's Grand Tours. The Vuelta began in Burgos on 14 August, and Stage 12 from Jaén to Córdoba occurred on 26 August. The race finished in Santiago de Compostela on 5 September.

## Classification standings

Legend :
| Denotes the leader of the general classification | Denotes the leader of the young rider classification |
| Denotes the leader of the points classification | Denotes the leader of the team classification |
| Denotes the leader of the mountains classification | Denotes the winner of the combativity award |

## Stage 12
### 26 August 2021 – Jaén to Córdoba, 175 km (109 mi)

The twelfth stage featured a hilly course from Jaén to Córdoba. The first 73.6 kilometres (45.7 mi) featured undulating terrain before a flat section led the riders into Córdoba for the first passage through the finish line and the intermediate sprint after 106 kilometres (66 mi) of racing. 7 kilometres (4.3 mi) after the intermediate sprint, the riders headed to the third-category climb of the Alto de San Jeronimo, which is 13 kilometres (8.1 mi) long with an average gradient of 3.3 percent. After a descent, the riders headed back to Córdoba where they passed through the finish line for the second time with 30.5 kilometres (19.0 mi) to go. Afterwards, the riders immediately climbed the second-category Alto del 14%, a 7.6-kilometre (4.7 mi) climb with an average gradient of 5.6 percent, with bonus seconds on offer to the first three riders across the top. The final 1.8 kilometres (1.1 mi) of the climb averaged 9.4 percent in gradient. The climb crested with 18.8 kilometres (11.7 mi) left, with a descent and a flat section leading back to the finish line in Córdoba.
Much like the previous two days, there was another long fight for the breakaway as the pace remained high for the first 75 kilometres (47 mi) of racing. Inside the final 100 kilometres (62 mi), Mikel Iturria (Euskaltel–Euskadi), Sander Armée (Team Qhubeka NextHash), and Sebastian Berwick (Israel Start-Up Nation) were finally able to establish a gap over the peloton. Five more riders attempted to bridge up to the break, eventually making contact up front with 84.5 kilometres (52.5 mi) to go. The eight riders attained a lead of around a minute before UAE Team Emirates came to the front of the peloton to control the break. As the break reached the Alto de San Jeronimo, Chad Haga (Team DSM) was called back by his team from the break. With 54 kilometres (34 mi) to go, a crash took down several riders in the peloton, including Primož Roglič (Team Jumbo–Visma) and Adam Yates (Ineos Grenadiers), but all riders eventually got back up and returned to the peloton. Near the top, Iturria attacked his breakaway companions, but he was eventually chased back down.
On the short valley before the Alto del 14%, the break began to splinter as Maxim Van Gils (Lotto–Soudal) went solo off the front, with the peloton closing in at around half a minute down. Jonathan Lastra (Caja Rural–Seguros RGA) attempted to bridge up to Van Gils but both riders were caught by the peloton on the climb. Towards the top of the climb, a quartet of attackers composed of Giulio Ciccone (Trek–Segafredo), Jay Vine (Alpecin–Fenix), Romain Bardet (Team DSM), and Sergio Henao (Team Qhubeka NextHash) pulled away from the peloton, building up a lead of half a minute over the peloton at the summit. On the descent, Ion Izagirre (Astana–Premier Tech) and Matteo Trentin (UAE Team Emirates) attempted to bridge up front but they were caught by the Team BikeExchange-led peloton. The quartet was gradually brought back, with Vine soloing off the front as the catch was being made before the final kilometre; Vine was eventually brought back within the final kilometre. In the final sprint to the line, Jens Keukeleire (EF Education–Nippo) led out his sprinter, Magnus Cort, with Andrea Bagioli (Deceuninck–Quick-Step) on Cort's wheel. Cort held off Bagioli to win his second stage by half a wheel. Michael Matthews (Team BikeExchange) finished third while Trentin finished fourth. The top ten remained unchanged and Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) kept the red jersey.
Stage 12 Result :
| Rank | Rider | Team | Time |
| 1 | Magnus Cort (DEN) | EF Education–Nippo | 3h 44' 21" |
| 2 | Andrea Bagioli (ITA) | Deceuninck–Quick-Step | + 0" |
| 3 | Michael Matthews (AUS) | Team BikeExchange | + 0" |
| 4 | Matteo Trentin (ITA) | UAE Team Emirates | + 0" |
| 5 | Andreas Kron (DEN) | Lotto–Soudal | + 0" |
| 6 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 0" |
| 7 | Antonio Jesús Soto (ESP) | Euskaltel–Euskadi | + 0" |
| 8 | Anthony Roux (FRA) | Groupama–FDJ | + 0" |
| 9 | Gianluca Brambilla (ITA) | Trek–Segafredo | + 0" |
| 10 | Martijn Tusveld (NED) | Team DSM | + 0" |
General classification after Stage 12 :
| Rank | Rider | Team | Time |
| 1 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | 45h 33' 18" |
| 2 | Guillaume Martin (FRA) | Cofidis | + 58" |
| 3 | Primož Roglič (SLO) | Team Jumbo–Visma | + 1' 56" |
| 4 | Enric Mas (ESP) | Movistar Team | + 2' 31" |
| 5 | Miguel Ángel López (COL) | Movistar Team | + 3' 28" |
| 6 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 55" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 46" |
| 8 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 57" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 5' 03" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 5' 38" |

## Stage 13
### 27 August 2021 – Belmez to Villanueva de la Serena, 203.7 km (126.6 mi)

The thirteenth stage featured a flat parcours with rolling terrain that was expected to suit the pure sprinters. At 203.7 kilometres (126.6 mi) long, this was the longest stage of this year’s Vuelta. There were no categorized climbs on the route, but it featured some minor lumps. The intermediate sprint took place in Don Benito with 11.2 kilometres (7.0 mi) to go before the finish in Villanueva de la Serena.
From the start, three attackers, Luis Ángel Maté (Euskaltel–Euskadi), Álvaro Cuadros (Caja Rural–Seguros RGA), and Diego Rubio (Burgos BH), immediately pulled away from the peloton. They quickly increased their advantage to as much as three minutes before the sprinters' teams began to put riders on the front of the peloton to control the break. With around 60 kilometres (37 mi) to go, several teams decided to form echelons in the crosswinds, but no GC contender was caught out. The increase in pace dropped the breakaway's advantage to under 20 seconds, but the peloton eventually eased off and the gap increased back up slightly, with the break hovering at around half a minute ahead. The trio would soon be caught with 28.7 kilometres (17.8 mi) to go. At the intermediate sprint, with no other rider challenging him, points classification leader Fabio Jakobsen (Deceuninck–Quick-Step) rode off the front to take maximum points with teammate Bert Van Lerberghe following close behind. With several roundabouts in the final 4 kilometres (2.5 mi), Deceuninck–Quick-Step went to the front to set a fast tempo, which caused several splits in the peloton. The Deceuninck–Quick-Step train of Josef Černý, Zdeněk Štybar, and Florian Sénéchal continued to push the pace, with only Matteo Trentin (UAE Team Emirates) being able to keep up; a small gap had opened up to the next riders on the road, those being Jakobsen, the Alpecin–Fenix sprint train, and the Ineos Grenadiers duo of Egan Bernal and Tom Pidcock. Right as the lead group entered the final kilometre, Jakobsen was dropped, with the team turning to Sénéchal as their next sprint option. In the final sprint to the line, Alexander Krieger (Alpecin–Fenix) came around Van Lerberghe to continue the lead out. Sénéchal and Trentin were the only sprinters remaining, and the former held off the latter to win his first Grand Tour stage. Alberto Dainese (Team DSM) came from the rest of the lead group to finish third. Apart from Egan Bernal (Ineos Grenadiers) gaining five seconds on the other contenders at the finish, the rest of the top ten remained unchanged as Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) kept the red jersey for another day.
Stage 13 Result :
| Rank | Rider | Team | Time |
| 1 | Florian Sénéchal (FRA) | Deceuninck–Quick-Step | 4h 58' 23" |
| 2 | Matteo Trentin (ITA) | UAE Team Emirates | + 0" |
| 3 | Alberto Dainese (ITA) | Team DSM | + 2" |
| 4 | Luka Mezgec (SLO) | Team BikeExchange | + 3" |
| 5 | Stan Dewulf (BEL) | AG2R Citroën Team | + 3" |
| 6 | Piet Allegaert (BEL) | Cofidis | + 3" |
| 7 | Itamar Einhorn (ISR) | Israel Start-Up Nation | + 3" |
| 8 | Antonio Jesús Soto (ESP) | Euskaltel–Euskadi | + 3" |
| 9 | Rui Oliveira (POR) | UAE Team Emirates | + 3" |
| 10 | Egan Bernal (COL) | Ineos Grenadiers | + 6" |
General classification after Stage 13 :
| Rank | Rider | Team | Time |
| 1 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | 50h 31' 52" |
| 2 | Guillaume Martin (FRA) | Cofidis | + 58" |
| 3 | Primož Roglič (SLO) | Team Jumbo–Visma | + 1' 56" |
| 4 | Enric Mas (ESP) | Movistar Team | + 2' 31" |
| 5 | Miguel Ángel López (COL) | Movistar Team | + 3' 28" |
| 6 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 55" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 41" |
| 8 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 57" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 5' 03" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 5' 38" |

## Stage 14
### 28 August 2021 – Don Benito to Pico Villuercas, 165.7 km (103.0 mi)

The race returned to the mountains on the fourteenth stage with another summit finish atop Pico Villuercas. The first 50 kilometres (31 mi) of the stage was flat before going uphill towards the third-category Puerto Berzocana, a 7.7-kilometre (4.8 mi) climb with an average gradient of 5.2 percent. A short plateau section led to the first-category Alto Collado de Ballesteros: although only 2.8 kilometres (1.7 mi) long, the climb averages 14 percent in gradient. The descent led to around 35 kilometres (22 mi) of rolling hills, with the intermediate sprint taking place in Alía with 42.2 kilometres (26.2 mi) left, with bonus seconds on offer. With 14.5 kilometres (9.0 mi) to go, the riders reached the foot of the final climb of the day, the first-category Pico Villuercas. The climb featured irregular gradients, with an average gradient of just over 6 percent and a maximum gradient of 15 percent.
It took almost 10 kilometres (6.2 mi) for the breakaway to be established, with a group of 18 riders going off the front. As Intermarché–Wanty–Gobert Matériaux, the team of race leader Odd Christian Eiking, set a steady pace in the peloton, the break increased their lead to a maximum of around 10 minutes before stabilizing ahead of the Puerto Berzocana. At the top of the first two climbs, Romain Bardet (Team DSM) sprinted for maximum KOM points to take the virtual lead in the mountains classification ahead of Damiano Caruso (Team Bahrain Victorious). On the descent, with 50 kilometres (31 mi) to go, the break split as Daniel Navarro (Burgos BH), Nicolas Prodhomme (AG2R Citroën Team), and Matthew Holmes (Lotto–Soudal) attacked off the front. However, a few kilometres later, Holmes suffered a puncture, dropping him from the front. Inside the last 40 kilometres (25 mi), Jay Vine (Alpecin–Fenix), who was in the break, came in contact with one of his team's own cars while trying to grab a bidon and crashed, but he eventually got back on his bike. Up front, Prodhomme and Navarro were soon joined by Holmes and Sep Vanmarcke (Israel Start-Up Nation).
Inside the final 30 kilometres (19 mi), a seven-man group, including Bardet, made contact up front, prompting Prodhomme to launch another attack. Navarro and Vanmarcke tried to bridge up to him but both riders crashed on a curve; both riders would get back up. Prodhomme built his advantage to more than a minute ahead of the final climb of the day. From the chasing group, Navarro, Ryan Gibbons (UAE Team Emirates), and Andrey Zeits (Team BikeExchange) attacked as they chased down Prodhomme. Zeits dropped Navarro and Gibbons on the way to the top, eventually catching Prodhomme with around 6 kilometres (3.7 mi) left. However, Bardet attacked from the chasing group, passing both Prodhomme and Zeits and soloing off the front. Vine and Jesús Herrada (Cofidis) also passed the two riders as they chased Bardet, but the Frenchman gradually increased his lead. Bardet would go on to win the stage, 44 seconds ahead of Herrada and Vine. With his win, Bardet took the lead in the mountains classification with a 19-point buffer over Caruso.
In the GC group, Team Jumbo–Visma were content to let the break increase their lead to more than 14 minutes on the way to Pico Villuercas. On the final climb, the Cofidis duo of Guillaume Martin and Rémy Rochas attacked, with Martin attempting to gain enough time to take the red jersey from Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux), albeit unsuccessfully. Giulio Ciccone (Trek–Segafredo), who followed Martin’s move, accelerated just as Martin was being caught. After Ciccone was swept up by the peloton, Miguel Ángel López (Movistar Team) attacked with 2.7 kilometres (1.7 mi) left, managing to build a gap over the Team Jumbo–Visma-led peloton. Inside the final kilometre, Primož Roglič (Team Jumbo–Visma) accelerated from the peloton, immediately followed by Enric Mas (Movistar Team), Egan Bernal (Ineos Grenadiers), and Jack Haig (Team Bahrain Victorious). They came to within four seconds of catching López at the finish line while Adam Yates (Ineos Grenadiers) lost 12 seconds to Roglič. Despite losing 20 seconds to Roglič at the finish, Eiking retained the red jersey with a reduced lead of 54 seconds over Martin.
During the stage, Richard Carapaz (Ineos Grenadiers), who had entered the race as one of the top GC contenders, withdrew after suffering due to fatigue in the high temperatures. After losing time on the first mountainous stage (Stage 3), Carapaz had continued to gradually falter and was 49th on GC at the time of abandonment, almost an hour down on Eiking.
Stage 14 Result :
| Rank | Rider | Team | Time |
| 1 | Romain Bardet (FRA) | Team DSM | 4h 20' 36" |
| 2 | Jesús Herrada (ESP) | Cofidis | + 44" |
| 3 | Jay Vine (AUS) | Alpecin–Fenix | + 44" |
| 4 | Tom Pidcock (GBR) | Ineos Grenadiers | + 1' 12" |
| 5 | Clément Champoussin (FRA) | AG2R Citroën Team | + 1' 14" |
| 6 | Matthew Holmes (GBR) | Lotto–Soudal | + 1' 16" |
| 7 | Andrey Zeits (KAZ) | Team BikeExchange | + 1' 19" |
| 8 | Kévin Geniets (LUX) | Groupama–FDJ | + 1' 46" |
| 9 | Nicolas Prodhomme (FRA) | AG2R Citroën Team | + 2' 04" |
| 10 | Jan Tratnik (SLO) | Team Bahrain Victorious | + 2' 15" |
General classification after Stage 14 :
| Rank | Rider | Team | Time |
| 1 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | 55h 03' 17" |
| 2 | Guillaume Martin (FRA) | Cofidis | + 54" |
| 3 | Primož Roglič (SLO) | Team Jumbo–Visma | + 1' 36" |
| 4 | Enric Mas (ESP) | Movistar Team | + 2' 11" |
| 5 | Miguel Ángel López (COL) | Movistar Team | + 3' 04" |
| 6 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 35" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 21" |
| 8 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 49" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 4' 59" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 5' 31" |

## Stage 15
### 29 August 2021 – Navalmoral de la Mata to El Barraco, 197.5 km (122.7 mi)

The fifteenth stage featured almost 4,000 metres (13,000 ft) of vertical climbing. The first 70 kilometres (43 mi) were mostly flat apart from an uncategorized climb before the riders reached the first-category Alto de la Centenera, a 15.1-kilometre (9.4 mi) climb with an average gradient of 5.5 percent. Following the descent, the riders immediately took on the second-category Puerto de Pedro Bernardo, which is 9 kilometres (5.6 mi) long with an average gradient of 4.2 percent. A descent and a short valley section led to the first-category Puerto de Mijares, a 20.4-kilometre (12.7 mi) long climb with an average gradient of 5.4 percent. The descent led to the intermediate sprint at Burgohondo with 22.3 kilometres (13.9 mi) left. 14 kilometres (8.7 mi) from the finish, the riders began the final climb of the day, the third-category Puerto San Juan de Nava, which is 8.6 kilometres (5.3 mi) long with an average gradient of 3.8 percent. It crested with 5.4 kilometres (3.4 mi) to go, with bonus seconds on offer to the first three riders over the summit. From there, the run-in to the finish in El Barraco was slightly downhill.
A furious pace marked the start of the day as several riders attempted to break away. After around 10 kilometres (6.2 mi), a 25-man group, including GC contenders Sepp Kuss (Team Jumbo–Visma) and David de la Cruz (UAE Team Emirates), pulled away from the peloton. The group built an advantage of nearly three minutes before Movistar Team began to chase at a fast pace. Just before the group was caught, 10 riders from the original break attacked once again. However, several teams in the peloton kept the break in check, with their lead stabilizing at half a minute. Before the group was caught, Magnus Cort (EF Education–Nippo) and Pavel Sivakov (Ineos Grenadiers), who were part of the 10-man group, accelerated off the front. However, they were also caught by the peloton, with the attacks starting again afterwards. On the first climb of the day, Maxim Van Gils (Lotto–Soudal), Fabio Aru (Team Qhubeka NextHash), and Rafał Majka (UAE Team Emirates) managed to build a gap over the peloton. Towards the top, Van Gils was unable to stay with Majka and Aru, dropping back to a group of 20 chasers. At the top, the duo up front built a lead of a minute and a half over the group of chasers and more than three minutes over the peloton.
Ahead of the Puerto de Pedro Bernardo, Michael Storer (Team DSM), Geoffrey Bouchard (AG2R Citroën Team), and Gianluca Brambilla (Trek–Segafredo) attacked out of the chasing group. They were soon joined by Wout Poels (Team Bahrain Victorious) and Storer's teammate, Thymen Arensman. Back up front, 3.5 kilometres (2.2 mi) from the top, Aru was unable to follow Majka. Majka crossed the top with a 17-second lead over Aru and two minutes over the group of chasers, which had ballooned to 16 riders. On the descent, Aru continued to drift back to the chasing group while Majka maintained his advantage at around two minutes. Ahead of the penultimate climb of Puerto de Mijares, the chasing group split as Bouchard, Arensman, Steven Kruijswijk (Team Jumbo–Visma), and Carlos Verona (Movistar Team) broke away before catching Aru. Kruijswijk dropped his companions on the climb as he chased Majka. The Pole maintained his advantage over Kruijswijk at around a minute and a half over the top of the climb and on the descent. Majka stayed at the front to the end to complete an 87-kilometre (54 mi) solo, winning the stage by almost a minute and a half over Kruijswijk. Chris Hamilton (Team DSM), who was the only other remnant of the break to stay ahead of the peloton, finished more than two minutes down.
In the GC group, Intermarché–Wanty–Gobert Matériaux controlled the peloton for the whole day. On the final climb of the day, Adam Yates (Ineos Grenadiers) animated the group with a few attacks, with his last attack allowing him to build a gap. Yates maintained a 15-second advantage at the finish to take fourth on the stage. Apart from Yates' gains on the stage, there were no other gaps between the contenders as Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) kept the red jersey heading into the second rest day.
Stage 15 Result :
| Rank | Rider | Team | Time |
| 1 | Rafał Majka (POL) | UAE Team Emirates | 4h 51' 36" |
| 2 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 27" |
| 3 | Chris Hamilton (AUS) | Team DSM | + 2' 19" |
| 4 | Adam Yates (GBR) | Ineos Grenadiers | + 2' 42" |
| 5 | Giulio Ciccone (ITA) | Trek–Segafredo | + 2' 57" |
| 6 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | + 2' 57" |
| 7 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 2' 57" |
| 8 | Sepp Kuss (USA) | Team Jumbo–Visma | + 2' 57" |
| 9 | David de la Cruz (ESP) | UAE Team Emirates | + 2' 57" |
| 10 | Enric Mas (ESP) | Movistar Team | + 2' 57" |
General classification after Stage 15 :
| Rank | Rider | Team | Time |
| 1 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | 59h 57' 50" |
| 2 | Guillaume Martin (FRA) | Cofidis | + 54" |
| 3 | Primož Roglič (SLO) | Team Jumbo–Visma | + 1' 36" |
| 4 | Enric Mas (ESP) | Movistar Team | + 2' 11" |
| 5 | Miguel Ángel López (COL) | Movistar Team | + 3' 04" |
| 6 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 35" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 21" |
| 8 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 34" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 4' 59" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 5' 31" |

## Stage 16
### 31 August 2021 – Laredo to Santa Cruz de Bezana, 180 km (110 mi)

Coming off the second and final rest day, the sixteenth stage featured one of the last possible chances for the sprinters. Although classified as a flat stage, the course featured rolling hills throughout the stage along with the third-category Alto de Hijas, which crested at 106 kilometres (66 mi) into the stage. The intermediate sprint took place in Santillana del Mar with 32.4 kilometres (20.1 mi) left.
A few kilometres after the stage started, a crash took down some riders, splitting the peloton in the process; all those who crashed would eventually get back up. Giulio Ciccone (Trek–Segafredo) was among those who went down while Enric Mas (Movistar Team) and Guillaume Martin (Cofidis) were among those caught behind the incident. As the peloton slowed down, four riders, Quinn Simmons (Trek–Segafredo), Stan Dewulf (AG2R Citroën Team), Mikel Bizkarra (Euskaltel–Euskadi), and Dimitri Claeys (Team Qhubeka NextHash), broke away, with Jetse Bol (Burgos BH) joining them shortly thereafter. The quintet increased their lead to around two minutes before Deceuninck–Quick-Step, Groupama–FDJ, and Team DSM began to pace in the peloton in anticipation for the sprint finish. During the stage, it was announced that Ciccone, Rudy Molard (Groupama–FDJ), and Sep Vanmarcke (Israel Start-Up Nation) abandoned the race due to their crash injuries. On the climb of Alto de Hijas, the Lotto–Soudal pair of Harm Vanhoucke and Maxim Van Gils attacked from the peloton, with Van Gils pacing Vanhoucke up to the break on the descent before dropping back to the peloton.
With around 57 kilometres (35 mi) to go, UAE Team Emirates set a faster pace at the front of the peloton, splitting the group in two; among those caught out was Fabio Jakobsen (Deceuninck–Quick-Step). Jakobsen's group trailed by as much as half a minute, but they would eventually regain contact with 48 kilometres (30 mi) left. With around 11 kilometres (6.8 mi) to go, Andreas Kron (Lotto–Soudal) attacked from the peloton with the break just 15 seconds ahead, but he was reeled back in quickly. Up front, Dewulf dropped his breakaway companions but he was caught with 4.5 kilometres (2.8 mi) left. In the final sprint to the line, Jordi Meeus (Bora–Hansgrohe) started his sprint first but Jakobsen, on his 25th birthday, came around him to take his third stage win of the race. Meeus held on to second while Matteo Trentin (UAE Team Emirates) sprinted to third. All the contenders finished safely in the peloton as Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) retained the red jersey ahead of two difficult mountain stages.
Stage 16 Result :
| Rank | Rider | Team | Time |
| 1 | Fabio Jakobsen (NED) | Deceuninck–Quick-Step | 4h 08' 57" |
| 2 | Jordi Meeus (BEL) | Bora–Hansgrohe | + 0" |
| 3 | Matteo Trentin (ITA) | UAE Team Emirates | + 0" |
| 4 | Michael Matthews (AUS) | Team BikeExchange | + 0" |
| 5 | Alberto Dainese (ITA) | Team DSM | + 0" |
| 6 | Jon Aberasturi (ESP) | Caja Rural–Seguros RGA | + 0" |
| 7 | Rui Oliveira (POR) | UAE Team Emirates | + 0" |
| 8 | Riccardo Minali (ITA) | Intermarché–Wanty–Gobert Matériaux | + 0" |
| 9 | Antonio Jesús Soto (ESP) | Euskaltel–Euskadi | + 0" |
| 10 | Clément Venturini (FRA) | AG2R Citroën Team | + 0" |
General classification after Stage 16 :
| Rank | Rider | Team | Time |
| 1 | Odd Christian Eiking (NOR) | Intermarché–Wanty–Gobert Matériaux | 64h 06' 47" |
| 2 | Guillaume Martin (FRA) | Cofidis | + 54" |
| 3 | Primož Roglič (SLO) | Team Jumbo–Visma | + 1' 36" |
| 4 | Enric Mas (ESP) | Movistar Team | + 2' 11" |
| 5 | Miguel Ángel López (COL) | Movistar Team | + 3' 04" |
| 6 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 35" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 21" |
| 8 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 34" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 4' 59" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 5' 31" |

## Stage 17
### 1 September 2021 – Unquera to Lagos de Covadonga, 185.8 km (115.5 mi)

The seventeenth stage was the first of two consecutive mountain stages considered to be decisive in the battle for the red jersey and the overall victory. After 32 kilometres (20 mi) of mostly flat roads, the climbing began with the third-category Altu de Hortigueru, which is 5.3 kilometres (3.3 mi) long with an average gradient of 4.7 percent. Following a long valley section, the riders reached the foot of the first-category La Collada Llomena [es], which is climbed twice on the stage. The climb is 7.6 kilometres (4.7 mi) long with an average gradient of 9.3 percent. The two passages were separated by a valley section as the riders looped back towards the foot of the climb. Bonus seconds were on offer at the top of the second ascent. Following a descent and another long valley section, the riders reached the intermediate sprint in Cangas de Onís with 22.3 kilometres (13.9 mi) left. Afterwards, the riders tackled the final climb, the special category Lagos de Covadonga. The climb averages 6.9 percent in gradient over 12.5 kilometres (7.8 mi) but the first 9 kilometres (5.6 mi) averages 9 percent. Towards the top, there is a short descent before a 7.3 percent section followed by another short descent and a 5 percent uphill section towards the finish line.
At the start of the stage, there was a big fight for the break as several riders attempted to pull away. It would take more than 80 kilometres (50 mi) before a 15-man group, including David de la Cruz (UAE Team Emirates) broke away from the peloton on the first ascent of La Collada Llomena. The front group would soon be joined by Mikel Landa (Team Bahrain Victorious). The break built their lead to a minute at the top, where Michael Storer (Team DSM) took the maximum KOM points. Meanwhile, in the peloton, race leader Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) was dropped near the top before catching back up on the descent. Over the first descent of La Collada Llomena, Olivier Le Gac (Groupama–FDJ) accelerated from the breakaway. The remaining remnants of the break were eventually caught by the Team Jumbo–Visma-led peloton, which kept the break on a tight leash, while Le Gac was caught by the peloton with 6 kilometres (3.7 mi) left to the top of the second ascent of La Collada Llomena.
Ineos Grenadiers soon took to the front of the peloton to set a fast pace, which thinned out the group and dropped several riders, including Eiking. With 61 kilometres (38 mi) to go, Egan Bernal (Ineos Grenadiers) launched an attack, followed immediately by Primož Roglič (Team Jumbo–Visma). Miguel Ángel López (Movistar Team) attempted to follow the move but he soon dropped back to the group with the other contenders, which was being led by Team Bahrain Victorious. Bernal and Roglič crossed the top with a lead of almost a minute over the chasers with Eiking at more than a minute and a half down. On the descent, several riders crashed, including Eiking and Aleksandr Vlasov (Astana–Premier Tech); all riders were able to continue the race. The duo up front began to work together on the valley section, increasing their gap to more than two minutes over the chasers. However, Team Bahrain Victorious gradually reduced the duo's lead on the valley section, with Roglič and Bernal starting the climb of Lagos de Covadonga with a lead of a minute and a half.
Around 2 kilometres (1.2 mi) into the climb, Guillaume Martin (Cofidis), who was sitting in second in the GC, was unable to follow the pace set by Team Bahrain Victorious in the chase group. Up front, 7.5 kilometres (4.7 mi) from the top, Roglič managed to drop Bernal. He gradually increased his lead towards the top, eventually soloing to his third stage win and the red jersey. Meanwhile, the chase group gradually thinned out on the climb until it was down to just six riders, including Roglič's closest rivals as well as his teammate, Sepp Kuss, and Gino Mäder (Team Bahrain Victorious). López and his teammate, Enric Mas, launched separate attacks but they would be caught each time. In the final 2 kilometres (1.2 mi), they were able to catch up to Bernal. With Roglič already beginning his post-race descent back down the climb, Kuss led the group over the line at 1' 35" down. Martin lost four minutes on the day while Eiking crossed the line at nine minutes behind.
In the GC, Roglič increased his advantage to 2' 22" over Mas and 3' 11" over López. Jack Haig (Team Bahrain Victorious) kept his fourth place at 35 seconds behind López. Martin dropped to fifth at more than four minutes behind, with Bernal, Yates, and Kuss sitting within a minute of him. Eiking dropped out of the top ten, sitting at 11th, just under eight minutes in arrears.
Stage 17 Result :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 4h 34' 45" |
| 2 | Sepp Kuss (USA) | Team Jumbo–Visma | + 1' 35" |
| 3 | Miguel Ángel López (COL) | Movistar Team | + 1' 35" |
| 4 | Adam Yates (GBR) | Ineos Grenadiers | + 1' 35" |
| 5 | Jack Haig (AUS) | Team Bahrain Victorious | + 1' 35" |
| 6 | Enric Mas (ESP) | Movistar Team | + 1' 35" |
| 7 | Egan Bernal (COL) | Ineos Grenadiers | + 1' 35" |
| 8 | Gino Mäder (SUI) | Team Bahrain Victorious | + 1' 35" |
| 9 | Louis Meintjes (RSA) | Intermarché–Wanty–Gobert Matériaux | + 2' 29" |
| 10 | Clément Champoussin (FRA) | AG2R Citroën Team | + 2' 44" |
General classification after Stage 17 :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 68h 42' 56" |
| 2 | Enric Mas (ESP) | Movistar Team | + 2' 22" |
| 3 | Miguel Ángel López (COL) | Movistar Team | + 3' 11" |
| 4 | Jack Haig (AUS) | Team Bahrain Victorious | + 3' 46" |
| 5 | Guillaume Martin (FRA) | Cofidis | + 4' 16" |
| 6 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 29" |
| 7 | Adam Yates (GBR) | Ineos Grenadiers | + 4' 45" |
| 8 | Sepp Kuss (USA) | Team Jumbo–Visma | + 5' 04" |
| 9 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 6' 54" |
| 10 | Gino Mäder (SUI) | Team Bahrain Victorious | + 6' 58" |

## Stage 18
### 2 September 2021 – Salas to Altu d'El Gamoniteiru, 162.6 km (101.0 mi)

The eighteenth stage was the second of back-to-back mountain stages that were expected to be decisive in the GC battle. The first 44.2 kilometres (27.5 mi) ran on a false flat uphill before the riders tackled the first-category Puertu de San Llaurienzu, a 9.9-kilometre (6.2 mi) long climb with an average gradient of 8.6 percent. Following the descent, the riders gradually climbed uphill towards the intermediate sprint in Bárzana after 84.8 kilometres (52.7 mi) of racing. Immediately afterwards, the riders climbed the first-category Alto de la Cobertoria [es], which is 7.9 kilometres (4.9 mi) long with an average gradient of 8.6 percent. A descent and a valley section was soon followed by the second-category Altu la Segá o del Cordal [es], an 8.3-kilometre (5.2 mi) long climb with an average gradient of 5.7 percent and bonus seconds on offer at the summit. The descent was immediately followed by the final special category climb of the race, the Altu d'El Gamoniteiru. The climb, which is 14.6 kilometres (9.1 mi) long with an average gradient of 9.8 percent, is divided in two sections. The first 7.3-kilometre (4.5 mi) section averages 10.3 percent before easing into a 3.5 percent section. The final 5.8 kilometres (3.6 mi) averages 10.4 percent in gradient, with the climb's steepest section occurring in the final kilometre. The Cima Alberto Fernández was awarded to the stage winner.
James Piccoli (Israel Start-Up Nation) kicked off the attacks when he pulled away after just 2 kilometres (1.2 mi). He would be joined by 31 other riders, with the group quickly building a gap over the peloton. Team Bahrain Victorious, the only team not represented in the break, began to pace in the peloton after the break was established. The gap increased to a maximum of five minutes before stabilizing. On the first climb, the Puertu de San Llaurienzu, Piccoli pushed on from the break but he was brought back near the top. At the top, Michael Storer (Team DSM) took maximum points to increase his total to 44 points in the mountains classification. On the descent, the peloton split under the pace set by Team Bahrain Victorious but no contender was caught out, and the peloton eventually reformed. The pace caused the deficit to the break to decrease to three and a half minutes. As the break made their way to the top of Alto de la Cobertoria, Storer launched his attack. He quickly built a lead of a minute over the chasers at the top, where he took maximum points to take the lead in the mountains classification.
On the descent of the Cobertoria, Storer increased his lead to two minutes over the chasers and almost six minutes over the peloton. As the peloton reached the valley section, Movistar Team began to contribute to the chase. The pace saw Storer's lead decrease to less than three minutes just as he reached the penultimate climb, the Altu la Segá o del Cordal. The peloton caught the chase group on the climb, leaving Storer out front as the only remaining breakaway rider. Towards the top, Romain Bardet (Team DSM) and Mikel Bizkarra (Euskaltel–Euskadi) attacked from the peloton. Bardet dropped Bizkarra on the descent as he held a deficit of around two minutes to his teammate up front. The peloton eventually caught Bardet just as they started the final climb of Altu d'El Gamoniteiru.
On the lower slopes of Gamoniteiru, Geoffrey Bouchard (AG2R Citroën Team) and David de la Cruz (UAE Team Emirates) launched separate attacks, joining together before de la Cruz dropped Bouchard as he went off in pursuit of Storer. De la Cruz caught Storer with around 7 kilometres (4.3 mi) to go before dropping the Australian with around 5.5 kilometres (3.4 mi) left. Meanwhile, from behind, Jan Hirt (Intermarché–Wanty–Gobert Matériaux) increased the pace in the main group of contenders for his teammate, Louis Meintjes. Inside the final 5 kilometres (3.1 mi), Egan Bernal (Ineos Grenadiers) accelerated from the GC group, followed immediately by the Team Jumbo–Visma pair of Primož Roglič and Sepp Kuss and the Movistar Team duo of Enric Mas and Miguel Ángel López. With 3.9 kilometres (2.4 mi) to go, López attacked in pursuit of de la Cruz. He immediately dropped de la Cruz after catching him. From behind, Bernal put in a few more accelerations but Roglič and Mas were able to follow him each time. López would not be caught as he soloed to the stage win. Roglič dropped Bernal and Mas towards the line to finish 14 seconds down. Mas took third at 20 seconds down with Bernal a further two seconds in arrears. The group containing the Team Bahrain Victorious duo of Jack Haig and Gino Mäder, together with de la Cruz and Meintjes, finished 58 seconds behind.
In the GC, Roglič increased his lead over Mas to 2' 30", with López 23 seconds further in arrears. Haig retained fourth place, but he dropped to four and a half minutes behind while Bernal rounded out the top five at seven seconds behind Haig. Adam Yates (Ineos Grenadiers) and Kuss retained their positions while Mäder climbed to eighth on GC. Guillaume Martin (Cofidis) dropped to ninth while Meintjes rounded out the top ten.
Stage 18 Result :
| Rank | Rider | Team | Time |
| 1 | Miguel Ángel López (COL) | Movistar Team | 4h 41' 21" |
| 2 | Primož Roglič (SLO) | Team Jumbo–Visma | + 14" |
| 3 | Enric Mas (ESP) | Movistar Team | + 20" |
| 4 | Egan Bernal (COL) | Ineos Grenadiers | + 22" |
| 5 | Jack Haig (AUS) | Team Bahrain Victorious | + 58" |
| 6 | David de la Cruz (ESP) | UAE Team Emirates | + 58" |
| 7 | Gino Mäder (SUI) | Team Bahrain Victorious | + 58" |
| 8 | Louis Meintjes (RSA) | Intermarché–Wanty–Gobert Matériaux | + 58" |
| 9 | Sepp Kuss (USA) | Team Jumbo–Visma | + 1' 06" |
| 10 | Adam Yates (GBR) | Ineos Grenadiers | + 1' 07" |
General classification after Stage 18 :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 73h 24' 25" |
| 2 | Enric Mas (ESP) | Movistar Team | + 2' 30" |
| 3 | Miguel Ángel López (COL) | Movistar Team | + 2' 53" |
| 4 | Jack Haig (AUS) | Team Bahrain Victorious | + 4' 36" |
| 5 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 43" |
| 6 | Adam Yates (GBR) | Ineos Grenadiers | + 5' 44" |
| 7 | Sepp Kuss (USA) | Team Jumbo–Visma | + 6' 02" |
| 8 | Gino Mäder (SUI) | Team Bahrain Victorious | + 7' 48" |
| 9 | Guillaume Martin (FRA) | Cofidis | + 8' 31" |
| 10 | Louis Meintjes (RSA) | Intermarché–Wanty–Gobert Matériaux | + 9' 02" |

## Stage 19
### 3 September 2021 – Tapia to Monforte de Lemos, 191.2 km (118.8 mi)

The nineteenth stage featured a hilly stage with a flat finale. After 12 kilometres (7.5 mi), the riders climbed the third-category Alto da Sela d'Entorcisa, which is 9.9 kilometres (6.2 mi) long with an average gradient of 3.9 percent. The climb was followed immediately by the second-category Alto da Garganta, a 10.3-kilometre (6.4 mi) long climb with an average gradient of 5.6 percent. Following the descent, the riders tackled the second-category Alto de Barbeitos, which is 11.8 kilometres (7.3 mi) long with an average gradient of 3.8 percent although the first 5.7 kilometres (3.5 mi) are much steeper at 5.6 percent. The next 43.1 kilometres (26.8 mi) featured rolling terrain. The final 87.2 kilometres (54.2 mi) were mostly flat apart from an uncategorized climb with 36.6 kilometres (22.7 mi) left, with the intermediate sprint situated near the top in Oural [es], at 27.6 kilometres (17.1 mi) from the finish.
At the start of the stage, a group of 24 riders broke clear from the peloton. Several riders attempted to bridge up to the break but the chasers were swept up by the peloton. As the break reached the top of the Alto da Garganta, some riders were dropped from the group, leaving 18 out in front. In the peloton, points classification leader Fabio Jakobsen (Deceuninck–Quick-Step) was dropped, with Team BikeExchange keeping the pace high to prevent him from coming back. The peloton allowed the break to build a two-minute advantage, with the gap stabilizing due to the efforts of Team BikeExchange and Team DSM at the front of the peloton. As Team DSM gradually decreased the break’s lead, Quinn Simmons (Trek–Segafredo) attacked from the break with 60 kilometres (37 mi) left. After Simmons was brought back, Rui Oliveira (UAE Team Emirates) launched his own attack but he was caught by the chase group. At this point, only 11 riders were left up front.
With 43 kilometres (27 mi) left, a crash brought down several riders in the peloton. The biggest victim was Louis Meintjes (Intermarché–Wanty–Gobert Matériaux), sitting in tenth on GC, as he was forced to abandon the race. Meanwhile, up front, as their lead hovered at less than a minute, Simmons accelerated for a second time, with Oliveira following immediately. Five more riders, Andreas Kron (Lotto–Soudal), Andrea Bagioli (Deceuninck–Quick-Step), Anthony Roux (Groupama–FDJ), and the EF Education–Nippo duo of Magnus Cort and Lawson Craddock (EF Education–Nippo), slowly closed the gap to the lead duo. Despite their lead hovering at less than half a minute, the break managed to work well together to maintain their advantage to the finish. In the final sprint, Craddock led out his teammate, Cort, before Simmons began his sprint. Cort passed Simmons before holding off Oliveira to take his third stage win of the race. Alberto Dainese (Team DSM) led the peloton home at 18 seconds down. The only change in the top ten was David de la Cruz (UAE Team Emirates) climbing into tenth as a result of Meintjes' withdrawal.
Stage 19 Result :
| Rank | Rider | Team | Time |
| 1 | Magnus Cort (DEN) | EF Education–Nippo | 4h 24' 54" |
| 2 | Rui Oliveira (POR) | UAE Team Emirates | + 0" |
| 3 | Quinn Simmons (USA) | Trek–Segafredo | + 0" |
| 4 | Andrea Bagioli (ITA) | Deceuninck–Quick-Step | + 0" |
| 5 | Anthony Roux (FRA) | Groupama–FDJ | + 0" |
| 6 | Andreas Kron (DEN) | Lotto–Soudal | + 0" |
| 7 | Lawson Craddock (USA) | EF Education–Nippo | + 5" |
| 8 | Alberto Dainese (ITA) | Team DSM | + 18" |
| 9 | Matteo Trentin (ITA) | UAE Team Emirates | + 18" |
| 10 | Alexander Krieger (GER) | Alpecin–Fenix | + 18" |
General classification after Stage 19 :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 77h 49' 37" |
| 2 | Enric Mas (ESP) | Movistar Team | + 2' 30" |
| 3 | Miguel Ángel López (COL) | Movistar Team | + 2' 53" |
| 4 | Jack Haig (AUS) | Team Bahrain Victorious | + 4' 36" |
| 5 | Egan Bernal (COL) | Ineos Grenadiers | + 4' 43" |
| 6 | Adam Yates (GBR) | Ineos Grenadiers | + 5' 44" |
| 7 | Sepp Kuss (USA) | Team Jumbo–Visma | + 6' 02" |
| 8 | Gino Mäder (SUI) | Team Bahrain Victorious | + 7' 48" |
| 9 | Guillaume Martin (FRA) | Cofidis | + 8' 31" |
| 10 | David de la Cruz (ESP) | UAE Team Emirates | + 9' 24" |

## Stage 20
### 4 September 2021 – Sanxenxo to Mos (Castro de Herville), 202.2 km (125.6 mi)

The penultimate stage, which ran along the Atlantic coast, featured the final chance for the climbers to take some time ahead of the final day time trial. The first half of the stage was characterized by rolling hills while the second half featured five categorized climbs. The first categorized climb came with 96.8 kilometres (60.1 mi) left: the third-category Alto de Vilachán was 6.5 kilometres (4.0 mi) long with an average gradient of 5.4 percent. The descent immediately led to the second-category Alto de Mabia, a 6-kilometre (3.7 mi) long climb with an average gradient of 5.7 percent. Following the descent and a short flat section, the riders climbed the first-category Alto de Mougás, which is 9.8 kilometres (6.1 mi) long with an average gradient of 6.4 percent. The first 5 kilometres (3.1 mi) is the hardest part of the climb, with the maximum gradient at 15 percent. At the bottom of the descent, the riders passed through the intermediate sprint in Baiona with 44.6 kilometres (27.7 mi) left. A short flat section led to the foot of the Alto de Prado, a 5.5-kilometre (3.4 mi) long climb with an average gradient of 6.3 percent and bonus seconds on offer at the summit. Following the descent, which was split by a short uphill section, the riders tackled the second-category Alto Castro de Herville, which is 9.7 kilometres (6.0 mi) long with an average gradient of 4.8 percent. The lower slopes of the climb feature a 1.5-kilometre (0.93 mi) section which averages more than 10 percent in gradient before easing towards the top, though the gradients ramp up to around 9.5 percent just before the finish line.
At the start, several riders attempted to put themselves in the break, with the pace remaining high. After around 30 kilometres (19 mi), Matteo Trentin (UAE Team Emirates) and Stan Dewulf (AG2R Citroën Team) managed to build a gap over the peloton. They would soon be joined by 14 more riders as Team Jumbo–Visma took control at the front of the peloton. The break built a maximum advantage of 11 and a half minutes before Ineos Grenadiers began to set a fast pace on the first categorized climb. Up front, Michael Storer (Team DSM) took maximum points on the first two climbs to extend his lead in the mountains classification. On the descent of Alto de Mabia, Trentin accelerated from the break, with Mark Padun (Team Bahrain Victorious) going off in pursuit of him. At this point, the peloton was closing to within five and a half minutes of the break.
On the climb of Alto de Mougás, Padun, Romain Bardet (Team DSM), Lilian Calmejane (AG2R Citroën Team), and Ryan Gibbons (UAE Team Emirates) bridged up to Trentin before Trentin was dropped further up the climb. Storer and Clément Champoussin (AG2R Citroën Team) also made it back to the front on the climb. On the easier gradients near the top of the climb, Trentin, Jan Hirt (Intermarché–Wanty–Gobert Matériaux), Floris De Tier (Alpecin–Fenix), Jesús Herrada (Cofidis), and Sylvain Moniquet (Lotto–Soudal) joined the front group. Storer took maximum points at the summit, clinching his lead in the mountains classification. On the descent, Gibbons accelerated at the front of the race. He gradually built his gap over the chasers, extending his lead to almost a minute and a half over the chase group as he started the penultimate climb, the Alto de Prado.
Meanwhile, in the GC group, Ineos Grenadiers continued to lead on the climb of Alto de Mougás before Adam Yates launched his attack. The only GC rider unable to respond was Sepp Kuss (Team Jumbo–Visma). Egan Bernal (Ineos Grenadiers) also launched an attack towards the top and after Bernal was caught, Yates put in another dig. This time, only Primož Roglič (Team Jumbo–Visma), Enric Mas (Movistar Team), and the Team Bahrain Victorious pair of Jack Haig and Gino Mäder were able to follow him. Mäder immediately went to the front as Haig was now in position to move ahead of Miguel Ángel López (Movistar Team) for the last step of the podium. The gap over the López group ballooned on the descent, with the red jersey group building a lead of over four minutes. Over the last two climbs, the group caught the remnants of the break, including the chase group. On the final climb, the Alto Castro de Herville, the group was within a minute of catching Gibbons when Yates attacked. Roglič and Mas immediately followed his move while Haig rode at his own pace before slowly coming back. Yates and Mas launched more attacks towards the top, catching and dropping Gibbons, but the other contenders came back each time. Inside the final 2 kilometres (1.2 mi), as the four riders looked at each other, Champoussin came from behind before immediately accelerating. He was not immediately chased down as he gained a lead of more than 20 seconds. Champoussin held on to win his first Grand Tour stage, only six seconds ahead of Roglič. Yates and Mas finished eight seconds behind while Haig was a further four seconds in arrears. A four-man group containing Bernal lost almost seven minutes as he surrendered the white jersey to Mäder.
In the GC, Roglič extended his lead to 2' 38" over Mas while Haig moved inside the top three at 4' 48" down. Yates jumped up to fourth, exactly a minute behind Haig while Mäder rounded out the top five at more than eight minutes down. Bernal, Kuss, Guillaume Martin (Cofidis), David de la Cruz (UAE Team Emirates), and Felix Großschartner (Bora–Hansgrohe) rounded out the top ten. The notable exception was López, who abandoned the race in the middle of the stage. He climbed off his bike in frustration after reportedly being told by his team to stop chasing and despite directeur sportif Patxi Vila's attempts to persuade him to ride again, López eventually left the race.
Stage 20 Result :
| Rank | Rider | Team | Time |
| 1 | Clément Champoussin (FRA) | AG2R Citroën Team | 5h 21' 50" |
| 2 | Primož Roglič (SLO) | Team Jumbo–Visma | + 6" |
| 3 | Adam Yates (GBR) | Ineos Grenadiers | + 8" |
| 4 | Enric Mas (ESP) | Movistar Team | + 8" |
| 5 | Jack Haig (AUS) | Team Bahrain Victorious | + 12" |
| 6 | Chris Hamilton (AUS) | Team DSM | + 16" |
| 7 | Mikel Bizkarra (ESP) | Euskaltel–Euskadi | + 23" |
| 8 | Ryan Gibbons (RSA) | UAE Team Emirates | + 26" |
| 9 | Gino Mäder (SUI) | Team Bahrain Victorious | + 26" |
| 10 | Floris De Tier (BEL) | Alpecin–Fenix | + 50" |
General classification after Stage 20 :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 83h 11' 27" |
| 2 | Enric Mas (ESP) | Movistar Team | + 2' 38" |
| 3 | Jack Haig (AUS) | Team Bahrain Victorious | + 4' 48" |
| 4 | Adam Yates (GBR) | Ineos Grenadiers | + 5' 48" |
| 5 | Gino Mäder (SUI) | Team Bahrain Victorious | + 8' 14" |
| 6 | Egan Bernal (COL) | Ineos Grenadiers | + 11' 38" |
| 7 | Sepp Kuss (USA) | Team Jumbo–Visma | + 13' 42" |
| 8 | Guillaume Martin (FRA) | Cofidis | + 16' 11" |
| 9 | David de la Cruz (ESP) | UAE Team Emirates | + 16' 19" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 20' 30" |

## Stage 21
### 5 September 2021 – Padrón to Santiago de Compostela, 33.8 km (21.0 mi) (ITT)

The final stage of this year's Vuelta was a 33.8-kilometre (21.0 mi) individual time trial from Padrón to Santiago de Compostela, which hosted the finish of the Vuelta for the first time since 2014. The first part of the course was gradually uphill, finishing off with a 1.7-kilometre (1.1 mi) section averaging 7.5 percent in gradient up to the first intermediate time check at 13 kilometres (8.1 mi). Following the descent to Bertamiráns [es], the road went uphill for a kilometre, averaging 6 percent in gradient, to the second intermediate time check with 9.8 kilometres (6.1 mi) left. After a plateau section, the road continued gradually uphill towards the finish line.
The stage occurred in the late afternoon and early evening. As is customary for individual time trial stages, the riders set off in the reverse order of their GC positions. As a result, Josef Černý (Deceuninck–Quick-Step) was the first rider off the start ramp. Černý, the current Czech time trial champion, set the first benchmark time with a time of 45' 18". His time was threatened by Chad Haga (Team DSM) but the American fell short by 27 seconds. Černý's time stood until Magnus Cort (EF Education–Nippo) beat his time at the two intermediate time checks before setting a time of 44' 16", just over a minute faster than Černý. Thymen Arensman (Team DSM) challenged Cort's time but he ended up 38 seconds slower than Cort. Over the course of the day, Fabio Jakobsen (Deceuninck–Quick-Step) and Michael Storer (Team DSM) finished safely within the time limit (35% slower than the stage winner's time) to confirm their victories in the points and mountains classifications, respectively.
The focus soon shifted to the battle for the GC placings, with a few spots still to be decided. Odd Christian Eiking (Intermarché–Wanty–Gobert Matériaux) was in contention for tenth place, with Felix Großschartner (Bora–Hansgrohe) leading him by only 16 seconds at the start of the day. Großschartner set a time of 45' 54", seventh fastest for the stage and beating Eiking's time by more than two and a half minutes to retain his tenth place overall. The eighth spot was also up for grabs, with Guillaume Martin (Cofidis) leading ninth-placed David de la Cruz (UAE Team Emirates) by only eight seconds. De la Cruz finished with a time of 46' 16", more than two minutes faster than Martin. He moved up to seventh overall by also overtaking Sepp Kuss (Team Jumbo–Visma), who was almost three minutes slower than the Spaniard. Sixth-placed Egan Bernal (Ineos Grenadiers) set a time of 45' 51", the sixth fastest on the day while fifth-placed Gino Mäder (Team Bahrain Victorious) confirmed his victory in the young rider's classification, only ceding a minute and a half to Bernal. The last spot to be decided was the battle for third, as Jack Haig (Team Bahrain Victorious) led Adam Yates (Ineos Grenadiers) by a minute at the start of the day. Yates was 31 seconds faster than Haig at one point but the Australian slowly brought the gap down. Haig eventually finished with a time of 46' 54", 26 seconds faster than Yates, to hold on to his podium spot. The last rider off the start ramp was the race leader, Primož Roglič (Team Jumbo–Visma). He was faster than Cort at the two time checks. Despite almost taking a wrong turn at one point, Roglič set a time of 44' 02", beating Cort's time by 14 seconds to win his fourth stage of the race and confirm his third consecutive Vuelta win. He also overtook Enric Mas (Movistar Team), who had started two minutes earlier than Roglič, in the last few hundred metres before the finish line. With his win, Roglič finished the Vuelta with an advantage of more than four and a half minutes, the largest margin of victory since Alex Zülle in 1997. The traditional prize-giving commenced shortly afterwards.
Stage 21 Result :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 44' 02" |
| 2 | Magnus Cort (DEN) | EF Education–Nippo | + 14" |
| 3 | Thymen Arensman (NED) | Team DSM | + 52" |
| 4 | Josef Černý (CZE) | Deceuninck–Quick-Step | + 1' 16" |
| 5 | Chad Haga (USA) | Team DSM | + 1' 43" |
| 6 | Egan Bernal (COL) | Ineos Grenadiers | + 1' 49" |
| 7 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 1' 52" |
| 8 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 52" |
| 9 | Enric Mas (ESP) | Movistar Team | + 2' 04" |
| 10 | Ion Izagirre (ESP) | Astana–Premier Tech | + 2' 06" |
Final general classification :
| Rank | Rider | Team | Time |
| 1 | Primož Roglič (SLO) | Team Jumbo–Visma | 83h 55' 29" |
| 2 | Enric Mas (ESP) | Movistar Team | + 4' 42" |
| 3 | Jack Haig (AUS) | Team Bahrain Victorious | + 7' 40" |
| 4 | Adam Yates (GBR) | Ineos Grenadiers | + 9' 06" |
| 5 | Gino Mäder (SUI) | Team Bahrain Victorious | + 11' 33" |
| 6 | Egan Bernal (COL) | Ineos Grenadiers | + 13' 27" |
| 7 | David de la Cruz (ESP) | UAE Team Emirates | + 18' 33" |
| 8 | Sepp Kuss (USA) | Team Jumbo–Visma | + 18' 55" |
| 9 | Guillaume Martin (FRA) | Cofidis | + 20' 27" |
| 10 | Felix Großschartner (AUT) | Bora–Hansgrohe | + 22' 22" |