Astana climber Lopez danced past Britain’s Adam Yates (Orica-Scott) on the final climb of the short but fiendishly sharp stage in the mythical Sierra Nevada mountains to double his haul in the 72nd edition of the race.
At the conclusion of the 129.4km ride in Andalusia, Lopez crested the top of the highest point in the race to win by 36 seconds over Russia’s Ilnur Zakarin of Katusha-Alpecin, with Dutchman Wilco Kelderman (Team Sunweb) finishing third at 45 seconds.
Miguel Angel Lopez produces stunning ride to win Stage 15
Colombian Estaban Chaves (Orica-Scott) came home two seconds further back for fourth place just ahead of Team Sky’s Froome, who extended his overall lead to 1’01” over Vincenzo Nibali after the Italian Bahrain-Merida rider was dropped by his red jersey rival in the closing metres.
Zakarin’s acceleration in the final two kilometres saw the Russian leapfrog Kelderman into third place on GC, 2’08” down on Froome.
Britain's four-time Tour de France winner rode defensively through the potential banana skin of a stage, relying on the pacing duties of his Sky team-mates – most notably the Dutchman Wout Poels, who finished a strong eighth to move into the top 10 on GC.
And with the prospect of a 40km time trial on Tuesday once the race resumes after the second rest day, Froome can be confident of at least doubling his lead over Nibali and his main rivals.
Lopez’s victory was his second of the race after the 23-year-old’s success in Stage 11 at Calar Alto – and Astana's third following the earlier triumph for Alexey Lutsenko in Stage 5 .
The team's latest swashbuckling performance saw Lopez move above his Italian team-mate Fabio Aru and into sixth place on GC behind compatriot Chaves, who completes the top five.
Lopez: 'I thank the team for letting me go it alone'
A fast start to Sunday’s showpiece stage saw numerous failed attempts from riders to break clear – most notably Italy’s Davide Villella of Cannondale-Drapac, who was particularly active in a bid to protect his lead in the polka dot jersey king of the mountains competition.
In the end, it took the best part of 50 very fast kilometres – covered in less than an hour – before a break stuck, with Cofidis duo Anthony Perez and Stéphane Rossetto riding clear with Nelson Oliveira (Movistar) before being joined by Edward Theuns (Trek-Segafredo), Matteo Trentin (Quick-Step Floors), Tom Van Asbroeck (Cannondale-Drapac), Sander Armée (Lotto-Soudal) and Lluis Mas (Caja Rural-Seguros RGA).
Adam Yates grinds to a halt on Stage 15: 'I tried my best, but I maybe went too early'
The gap reached a maximum three minutes as triple stage winner Trentin added a few intermediate sprint points to his green jersey tally ahead of the first of three climbs, the savagely steep Cat.1 Alto de Hazallanas.
It was quickly all change on the second, fiercer half of the climb when the break blew apart and Yates attacked from the peloton along with Romain Bardet (Ag2R-La Mondiale) and Steven Kruijswijk (LottoNL-Jumbo).
Frenchman Rossetto rode clear on the double-digit ramps before being caught and passed by the Belgian Armée, who crested the summit in pole position with Yates, Kruijswijk, Bardet and Oliviera in pursuit.
Back with the peloton, Froome had looked uncomfortable but was able to rely on Sky’s power in numbers as Italians Gianni Moscon and Salvatore Puccio came to the front of the pack to control the tempo and monitor attacks.
Astana chief Bruno Cenghialita: 'Aru is captain, but he will help Lopez's push for glory'
When Alberto Contador (Trek-Segafredo) attacked on the Cat.1 Alto del Purche with 27km remaining – taking Lopez with him – there was no response from the Sky train.
Meanwhile, Armée has been caught by the chasers, who themselves were soon caught by Contador and Lopez – but now before Yates had thrown caution to the win and gone for a long one.
The Briton crested the summit of El Purche with a minute’s advantage over a chasing quartet of Contador, Lopez, Bardet and Kruijswijk, with the streamlined peloton rolling along another 40 seconds back.
There was no respite before the final climb of the Alto Hoya de la Mora, which started almost instantaneously. Almost 20km long but not as steep as its predecessors, the final climb was more of a gradual grind than a beastly wall, with the eventual altitude of 2,510m the primary challenge for the weary riders.
Approaching the final 10km, Yates still held the best part of a minute’s advantage over his pursuers while Nibali – wearing the white combined classification jersey – had already tried his luck with a short-lived attack off the front of the pack.
Portal: 'This Vuelta is working out perfect for Froome'
Kruijswijk was the first to falter from the chasing group, the Dutchman dropping back with 6km remaining. And when Lopez finally danced on the pedals shortly after, both Contador and Bardet had no answer.
Yates’ lead was slashed to 30 seconds with 5km remaining – and when the Orica-Scott rider was caught by Lopez with 4km remaining, he dug deep momentarily before almost coming to a complete standstill. Yates eventually finished alongside his brother, Simon, 4’37” down on the rider who passed him with 3.8km remaining.
Back with the favourites and Poels set such a stifling tempo that none of Froome’s rivals tried to attack. It was not until inside the final 2km when Zakarin finally broke the deadlock with an acceleration that would see the Russian ride to second place on the stage – and move into a podium position on GC.
Kelderman took the final bonus seconds for third place ahead of Chaves and Froome, who looked over his shoulder to see his principal rival Nibali toil as he came home a further six seconds back.
Juan and Only: Flecha on why Lopez is the most likely threat to Froome
Fifth place on the stage saw Froome not only extend his lead in the overall standings, but also move above Trentin in the green jersey points classification and cement his lead in the combined classification.
"It's an amazing feeling to finish off today and to lead three competitions and to have survived a stage like today," said 32-year-old Froome.
I can't thank my team-mates enough. First of all, there was the attack from (Alberto) Contador and (Miguel Angel) Lopez. When they went, that was really the danger moment for us to try and control things. My team-mates were incredible. I feel incredible. If anyone had told me this would be the situation going into the second rest day, I'd have definitely taken it. I'm very happy with that and now I'm looking forward to the time-trial.
As for Lopez – his second win on the race, on the highest finish, saw the Colombian move within eight points of the polka dot jersey of Villella, who will now need a miracle to stave off the threat from the pint-sized climber in the final week of the race.
Stage 16 preview: Time Trial made for Froome
Finishing more than five minutes down on Lopez, the big loser of the day was Spaniard David de la Cruz of Quick-Step Floors who dropped from seventh to eleventh on GC after being distanced by the main pack on the second of three climbs.
After Monday's rest day, La Vuelta continues with the almost pan-flat 40.2km time trial to Logrono in Tuesday’s Stage 16 where, on paper at least, Froome should join Lopez as a double stage winner in this year’s race.
Felix Lowe @saddleblaze