Caleb Ewan claimed his second win of this year's Tour de France as Peter Sagan's defence of the green jersey suffered a huge blow after he was relegated.
Lotto Soudal rider Ewan, who won stage three, went one better than Tuesday's second place, narrowly edging out Bora-Hansgrohe's Sagan and Deceuninck-Quick-Step's Sam Bennett in a sprint finish.
Sagan was relegated to last place and docked 13 sprint points, however, with officials deeming his sprint to be dangerous after he appeared to ride into Jumbo Visma's Wout van Aert, who was subsequently moved up to third.
That decision means Bennett now has a 68-point lead over the Slovakian in the race for the green jersey.
The 167.5km stage to Poitiers offered the peloton their second straight bunch sprint in two days.
Before the dramatic finale, though, the race lost Astana's Ion Izagirre after he took a heavy fall with less than 40km to go and Bora-Hansroghe's Gregor Muhlberger, who was forced to throw in the towel after seemingly suffering from illness.
The race burst into life in the closing 10km after a relatively peaceful stage, with Lukas Postlberger of Bora-Hansroghe making the first move.
He was clawed back, though, and with just 250m to go it looked like Bennett would secure back-to-back stage victories. Ewan had other ideas, though, as the Australian crept onto his rival's wheel and surged past him with 50m to go and claim a fifth stage win of his career.
In the race for the yellow jersey, Jumbo Visma's Primoz Roglic maintained his 21-second lead over Team INEOS' Egan Bernal.
EWAN TARGETS MORE STAGE TRIUMPHS
Ewan says he was given additional motivation after being pipped by Bennett on the finish line on Tuesday and has set his sights on more stage wins in this year's Tour.
"It was very, very hectic," he told ITV4. "I was really close to the front between 3km and 1km to go. I was more forward than I wanted to be so dropped back into the bunch and from there it was quite crazy.
"I knew to keep calm and wait for the right gap to open and it did, quite late, but I had a real desire to win today after yesterday when I was disappointed with my sprint.
"I did a big throw and then you're basically looking down at the ground so I wasn't sure I won. I'm super happy with my two stage wins. One takes the pressure off but then you want a second and now I'll want a third.
"I hope to get through the mountains alright and win in Paris."
1. Caleb Ewan (Lotto Soudal) 4:00:01
2. Sam Bennett (Deceuninck-Quick-Step) +0:00
3. Wout van Aert (Jumbo-Visma) +0:00
4. Bryan Coquard (B&B Hotels-Vital Concept) +0:00
5. Clement Venturini (AG2R La Mondiale) +0:00
1. Primoz Roglic (Jumbo-Visma) 46:15:24
2. Egan Bernal (Team INEOS) +0:21
3. Guillaume Martin (Cofidis) +0:28
1. Sam Bennett (Deceuninck-Quick-Step) 243 points
2. Peter Sagan (Bora-Hansgrohe) 175
3. Bryan Coquard (B&B Hotels-Vital Concept) 157
King of the Mountains
1. Benoit Cosnefroy (AG2R La Mondiale) 36
2. Nans Peters (AG2R La Mondiale) 31
3. Marc Hirschi (Team Sunweb) 26
Thursday's 218km ride from Chauvigny to Sarran Correze is the longest stage on this year's Tour. The long, rolling route ventures deep into the heart of France and could suit sprinters, puncheurs or climbers.