Froome gave it everything to claw back as much time as he could on the technical 37km course from Xàbia, having started the day three minutes and 37 seconds adrift of Quintana overall.
Froome's stage-winning effort saw him gain 2-16 on Quintana, reducing his deficit to 1-21 with two stages remaining in the race. It's Froome's second individual stage win in the race, and third stage if you also count the opening team time trial won by Sky.
Before Froome finished the stage, it had looked as though Spanish TT specialist Jonathan Castroviejo (Movistar) had won the day, having been the quickest rider by some margin. In the end, though, he had to settle for second with Swede Tobias Ludvigsson (Giant-Alpecin) in third.
"I'm really happy with the result today, especially at this point in the season," Froome said after the finish.
"This is the last race of the season for me and I'm happy to be in good condition. Quintana still has more than a minute advantage but we'll keep fighting tomorrow."
"I think Quintana has good team around him and it is going to be hard to beat him," said Froome.
As expected, the general classification received a good shake-up below Quintana and Froome. Alberto Contador (Tinkoff) benefitted from a strong ride to move up to third overall as Esteban Chaves (Orica-BikeExchange) slipped to fourth after losing 3-13 to Froome.
Also slipping a place was Chaves's British team-mate, Simon Yates, who dropped from fifth to sixth after Andrew Talansky (Cannondale-Drapac) put in a good ride to finish the stage in seventh place and move up the GC.
The 2016 Vuelta really will be settled on the final mountain stage on Saturday, which takes the riders on a climb-filled 193km route from Benidorm to a summit finish on Alto de Aitana.
Froome and Sky will have to throw everything at Quintana and Movistar to move up to the top spot overall. Whatever happens, a fantastic finale is now set up.
Vuelta a España 2016, stage 19: Xàbia to Calpe, 37km ITT
1. Chris Froome (GBr) Team Sky in 46-33
2. Jonathan Castroviejo (Esp) Movistar at 44 secs
3. Tobias Ludvigsson (Swe) Giant-Alpecin at 1-24
4. Yves Lampaert (Bel) Etixx-QuickStep at 1-26
5. Victor Campenaerts (Bel) LottoNL-Jumbo at 1-47
6. Leopold Konig (Cze) Team Sky at 1-51
7. Andrew Talansky (USA) Cannondale-Drapac at 1-54
8. Alberto Contador (Esp) Tinkoff at 1-57
9. Fabio Felline (Ita) Trek-Segafredo at 1-58
10. Luis-Leon Sanchez (Esp) Astana at 2-10
11. Nairo Quintana (Col) Movistar at 2-16
24. Esteban Chaves (Col) Orica-BikeExchange at 3-13
32. Simon Yates (GBr) Orica-BikeExchange at 3-45
General classification after stage 19
1. Nairo Quintana (Col) Movistar in 75-18-52
2. Chris Froome (GBr) Team Sky at 1-21
3. Alberto Contador (Esp) Tinkoff at 3-43
4. Esteban Chaves (Col) Orica-BikeExchange at 4-54
5. Andrew Talasky (USA) Cannondale-Drapac at 7-12
6. Simon Yates (GBr) Orica-BikeExchange at 7-32
7. Michele Scarponi (Ita) Astana at 10-01
8. Daniel Moreno (Esp) Movistar at 10-07
9. David de la Cruz (Esp) Etixx-QuickStep at 10-11
10. Davide Formolo (Ita) Cannondale-Drapac at 11-14
Thank you for reading 10 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1