Bahrain-Victorious' Matej Mohoric won stage 19 of the Tour de France, denying Mark Cavendish an opportunity to break the record for stage wins he shares with Eddy Merckx.
Cavendish had hoped to compete for a 35th stage win, but a breakaway of 20 riders left the peloton well behind.
Cavendish will get another chance in Sunday's final stage, which finishes on the Champs-Elysees in Paris.
Slovenia's Tadej Pogacar remains in the leader's yellow jersey.
Mohoric's second win of the Tour comes after his team's hotel was raided by French police on Wednesday over an allegation of doping.
He said after his win: "I was thinking mostly about what happened two days ago. You feel a bit like a criminal. It's a good thing the police are checking - of course they found nothing, because we have nothing to hide.
"But I'm a bit disappointed with the system - it's not a nice thing when police walk into into your room and start going through all your belongings.
"Even if you have nothing to hide it feels a bit weird when they go through your personal things, photos of your family, your phone and your messages."
The largely flat 207km stage into Libourne was expected to result in a sprint finish, with all eyes on Cavendish, who was warmly embraced by Belgian cycling legend Merckx at the start in Mourenx.
However, after a frenetic opening and early crashes involving Geraint Thomas, Rafal Majka, Enric Mas, Sonny Colbrelli and Cavendish, a large breakaway was allowed to escape by a peloton with little appetite to deliver a meaningful chase on the back of several punishing days in the Pyrenees.
And Mohoric delivered a replica of the superb solo attack that carried him to victory on stage seven, riding clear with 26km to go and extending his lead as the chasing group failed to organise themselves.
The peloton rolled home almost 21 minutes later, and Pogacar will defend a lead of five minutes and 45 seconds over Jonas Vingegaard in Saturday's 30.8km individual time trial from Libourne to Saint Emilion.
Stage 19 results
1. Matej Mohoric (Slo/Bahrain Victorious) 4hrs 19mins 17secs
2. Christophe Laporte (Fra/Cofidis) +58secs
3. Casper Pedersen (Den/DSM) Same time
4. Mike Teunissen (Ned/Jumbo Visma) +1mins 02secs
5. Nils Politt (Ger/Bora-Hansgrohe) +1mins 08secs
6. Edward Theuns (Bel/Trek-Segafredo) Same time
7. Michael Valgren (Den/EF Education-Nippo)
8. Georg Zimmermann (Ger/Intermarche-Wanty-Gobert)
9. Anthony Turgis (Fra/TotalEnergies) 1mins 10secs
10. Jasper Stuyen (Bel/Trek-Segafredo) Same time
General classification after stage 19
1. Tadej Pogacar (Slo/UAE-Team Emirates) 79hrs 40mins 09secs
2. Jonas Vingegaard (Den/Jumbo Visma) +5mins 45secs
3. Richard Carapaz (Ecu/Ineos Grenadiers) +5mins 51secs
4. Ben O'Connor (Aus/AG2R Citroen) +8mins 18secs
5. Wilco Kelderman (Ned/Bora-Hansgrohe) +8mins 50secs
6. Enric Mas (Spa/Movistar) +10mins 11secs
7. Alexey Lutsenko (Kaz/Astana) +11mins 22secs
8. Guillaume Martin (Fra/Cofidis) +12mins 46secs
9. Pello Bilbao (Spa/Bahrain-Victorious) +13mins 48secs
10. Rigoberto Uran (Col/EF Education Nippo) +16mins 25secs