Christophe Laporte became the first Frenchman to win on this year's Tour de France after sprinting to victory on stage 19, while Jonas Vingegaard edged closer to general classification glory.
Laporte had largely played a supporting role for his excellent Jumbo-Visma team-mate Vingegaard, the yellow jersey holder and King of the Mountains victor.
But Laporte came to the fore on the 188.3-kilometre route from Castelnau-Magnoac to Cahors, overtaking Fred Wright to sprint to victory and secure Jumbo-Visma's fifth stage win of the Tour.
Wright headed the leading group, alongside Jasper Stuyven and Alexis Gougeard, with just under 30km to go, but Laporte produced a perfectly timed attack to leave the trio in his wake in Cahors.
Laporte was indebted to the work of his team-mates to support his late charge and revealed Wout van Aert's message of encouragement before the race had spurred him to glory.
"I am super happy. I find it hard to realise. Wout said to me, 'Today is for you'. The last time he said that to me was at Paris-Nice, so here it brings me luck," Laporte told broadcaster RMC after his victory.
"One and a half kilometres from the finish, I made the jump to catch up with those who were in front. I threw it from afar so that they wouldn't come back, and it worked.
"It's incredible. It's more than just a reward, it's huge!"
Vingegaard finished safely behind the leading riders in 13th, with his lead over defending champion Tadej Pogacar staying at three minutes and 26 seconds.
LAPORTE SPARES FRENCH BLUSHES
Laporte made the bold call to move away through the streets of Cohors and, helped by his Jumbo-Visma team-mates, was duly rewarded.
The 29-year-old ensured France will not end Le Tour without a stage winner, as they did in 1926 and 1999, while he secured his first stage win in his eighth appearance.
1. Christophe Laporte (Jumbo-Visma) 3:52:04
2. Jasper Philipsen (Alpecin-Deceuninck) +0:01
3. Alberto Dainese (Team DSM) +0:01
4. Florian Senechal (Quick-Step-Alpha Vinyl Team) +0:01
5. Tadej Pogacar (UAE Team Emirates) +0:01
1. Jonas Vingegaard (Jumbo-Visma) 75:45:39
2. Tadej Pogacar (UAE Team Emirates) +3:26
3. Geraint Thomas (INEOS Grenadiers) +8:00
1. Wout van Aert (Jumbo-Visma) 460
2. Jasper Philipsen (Alpecin-Deceuninck) 236
3. Tadej Pogacar (UAE Team Emirates) 235
King of the Mountains
1. Jonas Vingegaard (Jumbo-Visma) 72
2. Simon Geschke (Cofidis) 64
3. Giulio Ciccone (Trek–Segafredo) 61