The peloton were still trying to chase down a late breakaway of Jasper Stuyven (Trek-Segafredo), Fred Wright (Bahrain Victorious) and Alexis Gougeard (B&B Hotels) which held a 10 second gap as the race moved into the last kilometre.
The pace of the sprinters' teams was failing to shut down the gap as the break went full gas and Laporte made the smart decision to bridge across in the final two kilometres, before overtaking the trio with a powerful kick to solo to the line.
The win was the first by a Frenchman at this year's race and a great reward for the work Laporte put in for the yellow jersey through the last three weeks of hard racing, the fifth stage victory for Jumbo-Visma at this year's Tour.
“It’s hard to realize but I’m super happy," Laporte said after the stage.
The team trusted me today. Wout [van Aert] told me: ‘it’s for you today’. The last time he said that, it was at Paris-Nice.
"We first reached our goal bring Jonas [Vingegaard] safely to the 3km to go mark. I sped up in a curve and I saw a bit of a gap behind me. I did the job to come across the leaders. It’s more than a reward, it’s huge!
"I was already super happy with this Tour de France even though I got no result for myself. Now the team gave me the opportunity to go for a stage win, it’s exceptional to win after I came twice second in the past. Wout could have ridden for himself instead. It’s important to get a French win. If it makes the crowd and my family happy, I’m happy too.”
Sprinters Jasper Philipsen (Alpecin-Deceuninck) and Alberto Dainese (Team DSM) took second and third respectively in the sprint behind.
There were no attacks straight from the start of the stage until a small break got away four kilometres in with Mikkel Honoré (Quick Step), Quinn Simmons (Trek-Segafredo) and Taco van der Hoorn (Intermarché-Wanty Gobert) who were quickly joined by Matej Mohoric (Bahrain Victorious) and Nils Politt (BORA-Hansgrohe).
Never getting a big gap due to the sprinters' teams pacing behind, the break slowly dropped away until Simmons was caught with 35 kilometres to go. Once the riders were back together Alexis Gougeard (B&B Hotels-KTM) counter-attacked before Tadej Pogacar (UAE Team Emirates) also went in a last-ditch effort to take time in the overall classification.
Wout van Aert (Jumbo-Visma) reacted and shut down Pogacar's move, leaving the three-man break of Stuyven, Gougeard and Wright out in front with 32 kilometres to the finish in Cahors and a 30 second lead.
Lotto-Soudal and TotalEnergies led the peloton into the last 20 kilometres before van Aert and Australian Michael Matthews (BikeExchange-Jayco) began pulling closer to the line, Jumbo having a plan for Laporte all along.
With the sprint teams looking disorganised as the break continued to motor to the finish with Stuyven pacing, Laporte took his opportunity to bridge across as they rounded the left hand turn before the flamme rouge before a big acceleration gave him a gap to sit up and take in the win, his teammates overjoyed to see the result as they came in afterwards.
Jonas Vingegaard remained in yellow as Pogacar sprinted to fifth place to take five seconds in the general classification due to a small split behind in the peloton, his deficit now at 3 minutes and 21 seconds heading into tomorrow's time trial.
The Tour de France continues with Stage 20, a 40.7-kilometre time trial into Rocamadour. Watch from 8.55pm AEST on the SBS SKODA Tour Tracker, with the SBS and SBS On Demand broadcast starting from 9.30pm AEST.