In second place was Enric Mas of Movistar Team, who put in a consistent performance in the mountains throughout the race to become Roglič's closest rival.
Haig then held on to third in the final day time trial, even extending his gap over fourth-placed Adam Yates (Ineos Grenadiers).
The young rider classification was won by Gino Mäder of Team Bahrain Victorious, who performed consistently in the mountains while serving as a domestique for first Landa and then Haig.
He took the white jersey after following the decisive split in the GC group on the penultimate stage, allowing him to move up to fifth overall ahead of Egan Bernal (Ineos Grenadiers) in sixth place.
Other riders considered as contenders included Movistar Team duo Miguel Ángel López and Enric Mas, Aleksandr Vlasov (Astana–Premier Tech) and Pavel Sivakov (Ineos Grenadiers).
[7] Riders believed to be the main contenders for victories on the sprint stages were Fabio Jakobsen (Deceuninck–Quick-Step), Arnaud Démare (Groupama–FDJ), Jasper Philipsen (Alpecin–Fenix) and Michael Matthews (Team BikeExchange).
With 4.2 kilometres (2.6 mi) to go, a crash caught out several GC contenders, including Adam Yates (Ineos Grenadiers), Hugh Carthy (EF Education–Nippo), and David de la Cruz (UAE Team Emirates), with all three losing 30 seconds to a minute by the finish.
In the sprint to the line, Jasper Philipsen (Alpecin–Fenix) outsprinted Fabio Jakobsen (Deceuninck–Quick-Step) to take the win and the lead in the points classification while Roglič retained the red jersey.
On the final climb, Joe Dombrowski (UAE Team Emirates), Rein Taaramäe (Intermarché–Wanty–Gobert Matériaux), and Kenny Elissonde (Trek–Segafredo) emerged as the strongest riders from the break.
Several contenders, including Carthy, Romain Bardet (Team DSM), and Aleksandr Vlasov (Astana–Premier Tech), lost almost half a minute.
Recently crowned Olympic road race champion Richard Carapaz (Ineos Grenadiers) finished a minute behind the main GC group and was also docked 20 seconds for taking an unauthorized feed.
In the final sprint, Jakobsen outsprinted Arnaud Démare (Groupama–FDJ) for the win to take the lead in the points classification and the green jersey from Philipsen.
On the fourth climb, the Puerto El Collao, Alejandro Valverde (Movistar Team) launched an attack with Carapaz and Yates.
On the descent, Valverde crashed heavily on a bend, and though he was initially able to continue riding, he was eventually forced to abandon due to his injuries; it was later revealed that he had fractured his collarbone.
On the final climb, Yates put in a few attacks that split the GC group, bringing with him Roglič, Mas, López, De La Cruz, Egan Bernal (Ineos Grenadiers), and Louis Meintjes (Intermarché–Wanty–Gobert Matériaux) to the finish.
After a late attack from Jetse Bol (Burgos BH) was reeled back in, Jakobsen outsprinted Alberto Dainese (Team DSM) to take his second stage win of the race.
[23] On stage nine, the peloton faced a mountainous route with a summit finish atop the special category Alto de Velefique.
With 71 kilometres (44 mi) to go, Damiano Caruso (Team Bahrain Victorious) dropped his breakaway companions on the Alto Collado Venta Luisa.
In the GC group, Mikel Landa (Team Bahrain Victorious) was dropped at the bottom of the Velefique, eventually losing five minutes on the day.
[24] The first stage after the rest day began with gently undulating terrain before the riders tackled the second-category Puerto de Almáchar, which crested with 16.4 kilometres (10.2 mi) left before the descent and a flat run-in to the finish.
Aleksandr Vlasov (Astana–Premier Tech), Felix Großschartner (Bora–Hansgrohe), and Roglič's teammate, Sepp Kuss, bridged up to the quartet, with the seven riders crossing the line at almost 12 minutes down.
Magnus Cort (EF Education–Nippo) dropped his breakaway companions on the Puerto de Locubín before reaching the final kilometre with a lead of just under 20 seconds; he would eventually be caught with 200 metres (660 ft) left.
In the technical final few kilometres, Deceuninck–Quick-Step took to the front and set a fast pace, which ended up causing several gaps and dropping their sprinter, Fabio Jakobsen.
Bardet emerged as the strongest from the break, dropping everyone on the final climb to win the stage and take the lead in the mountains classification.
[29] On the fifteenth stage, the riders tackled four climbs before a short descent to the finish in El Barraco ahead of the second rest day.
De la Cruz dropped Storer with 5.5 kilometres (3.4 mi) left, but he was soon caught by Miguel Ángel López (Movistar Team), who attacked from a reduced group containing Roglič, Kuss, Mas, and Bernal.
After 50 kilometres (31 mi) of racing, a 16-man group broke away from the peloton, building a lead of 11 and a half minutes before Ineos Grenadiers began to chase.
On the descent of Alto de Mougás, Ryan Gibbons (UAE Team Emirates) attacked from the break, building a lead of over a minute on the chase group.
Inside the final 2 kilometres (1.2 mi), as the four riders stalled, Clément Champoussin (AG2R Citroën Team) accelerated from behind and held on to win his first Grand Tour stage.
Jakobsen, Storer, and Mäder finished the time trial safely to confirm their victories in the points, mountains, and young rider classifications, respectively.