Egan Bernal (Team Sky) held on by 39 seconds to take overall victory at Paris-Nice 2019, clawing back Nairo Quintana (Movistar) who had gone on a long-range attack.
Ion Izagirre (Astana) won the stage after attacking out of a breakaway group on the final climb.
Quintana, who started the day third overall, attacked with 47km to go to bridge to a breakaway group containing three of his team-mates including defending champion Marc Soler.
Bernal, led by his Team Sky team-mates, for some time sat over 50 seconds back on his compatriot and out of the race lead.
But fatigue began to set in for Quintana, who had burnt out his team-mate, and eventually Bernal was able to cross the line just four seconds behind the Quintana group thanks to the help of former race leader Michał Kwiatkowski.
Izagirre, who attacked with 12.7km to go on the final climb of the Col des Quartre Chemins, finished 18 seconds up on the breakaway group behind who failed to respond to his move. Oliver Naesen (Ag2r La Mondiale) took second in a sprint ahead of Wilco Kelderman (Sunweb).
How it happened
The final stage of Paris-Nice 2019 would be a familiar favourite to many riders who have ridden the race the last few years, with an up and down 110km route around the hills of Nice.
The early part of the day featured a flurry of attacking with various riders going up the road to get away. At just over 80km remaining a group of 37 were able to establish themselves up the road, however were unable to make huge gains on the Sky led yellow jersey group behind.
That saw Matteo Trentin (Mitchelton-Scott) decide to push on not long after on the second of six categorised climbs, gaining around 10 seconds advantage before Tejay van Garderen (EF Education First) and Julien El Fares (Delko Marseille Provence) were eventually able to bridge across.
They maintained an advantage hovering around 1-30 for some time, but were pursued by a chasing group containing Simon Yates (Mitchelton-Scott), Miguel Ángel López, Luis León Sánchez and Ion Izagirre (all Astana), Domenico Pozzovivo (Bahrain-Merida), Wilco Kelderman (Sunweb), Oliver Naesen (Ag2r La Mondiale), Felix Großschartner (Bora-Hansgrohe), Daniel Martínez (EF Education First) as well as Movistar riders Winner Anacona, Héctor Carretero and Marc Soler.
Van Garderen, the strongest climber of the front three leaders, found himself alone on the fourth climb of the Côte de Peille, but only held a slim advantage now on the group behind.
Nairo Quintana, just 46 seconds back on race leader Egan Bernal on GC, then attacked to bridge to the chase group with 47km to go.
With Quintana bridging across and his team-mate Soler now driving the pace, van Garderen was returned to the chase group with 42km remaining.
That group held an advantage of 50 seconds on the yellow jersey with 38km to go, putting Quintana in the virtual lead, and he cut his GC deficit by a further three seconds after taking the intermediate sprint with 31.3km to go.
With 23km to go the group still had 50 seconds as Sky used their domestiques to full effect to try and peg Quintana back. By this time Soler was long gone, and only EF Education First were doing any of the work with Quintana.
As they hit the final climb with around 16km to go, they held just 40 seconds advantage, and it looked as though Quintana would narrowly miss out on victory as he gradually looked more and more fatigued.
It was then Izagirre who attacked from front group on the final climb with 12.7km to go with eyes on the stage win, with no-one able to follow.
He quickly established a 20 second advantage and while Simon Yates tried to counter with 9.4km to go, very few inroads were made into his advantage.
With just a few kilometres to go the Bernal group had come back within 30 seconds on Quintana, while Izagirre continued ahead with 20 seconds advantage.
Eventually the Basque rider was able to sit up early to celebrate his stage victory, with the chasing group coming in at 18 seconds behind with Quintana finishing at 22 seconds down.
Bernal and Michał Kwiatkowski’s group had brought the time gap down even further in the final few kilometres, and were able to cross the line just four seconds behind to give Bernal the overall victory.
Paris-Nice 2019, stage eight: Nice to Nice (110km)
1 Ion Izagirre (Esp) Astana Pro Team, in 2-41-10
2 Oliver Naesen (Bel) Ag2r La Mondiale, at 18s
3 Wilco Kelderman (Ned) Team Sunweb
4 Daniel Martinez (Col) EF Education First
5 Felix Großschartner (Aut) Bora-Hansgrohe
6 Domenico Pozzovivo (Ita) Bahrain-Merida
7 Luis León Sánchez (Esp) Astana Pro Team, all same time
8 Simon Yates (GBr) Mitchelton-Scott, at 20s
9 Tejay Van Garderen (USA) EF Education First, at same time
10 Nairo Quintana (Col) Movistar Team, at 22s
17 Michał Kwiatkowski (Pol) Team Sky, at 26s
19 Egan Bernal (Col) Team Sky, at same time
Final general classification
1 Egan Bernal (Col) Team Sky, in 29-17-02
2 Nairo Quintana (Col) Movistar Team, at 39s
3 Michal Kwiatkowski (Pol) Team Sky, at 1-03
4 Jack Haig (Aus) Mitchelton-Scott, at 1-21
5 Romain Bardet (Fra) AG2R La Mondiale, at 1-45
6 George Bennett (NZl) Jumbo-Visma, at 2-20
7 Rudy Molard (Fra) Groupama-FDJ, at 3-02
8 Bob Jungels (Lux) Deceuninck-Quick-Step, at 3-06
9 Luis León Sánchez (Esp) Astana Pro Team, at 3-12
10 Ilnur Zakarin (Rus) Katusha-Alpecin, at 4-07