Dylan Groenewegen won his second Tour de France stage in as many days with another powerful sprint in Amiens.
The LottoNL-Jumbo rider kicked from deep to beat Andre Greipel and Fernando Gaviria, who were both later relegated after separate clashes.
That moved Peter Sagan up to second, with John Degenkolb third and Britain's Mark Cavendish eighth.
Team Sky's Geraint Thomas remains second overall but is now seven seconds behind yellow jersey Greg van Avermaet.
The Belgian BMC rider attacked off the front of the peloton to take a bonus second with just over 20km of the 181km stage from Dreux remaining.
Four-time winner Chris Froome is up to 12th, one minute six seconds down on Van Avermaet, after overtaking fellow Briton Adam Yates because of better aggregate stage placings.
Yates remains 13th after Quick-Step Floors' Julian Alaphilippe, who started the day fourth, was caught in a late crash and dropped out of the top 10.
Ireland's Dan Martin, who won stage six, fell heavily in that crash with just over 15km to go and lost one minute 16 seconds to drop to 31st overall.
The UAE Team Emirates leader suffered a cut on his elbow but an X-ray later confirmed he had not broken any bones.
Groenewegen calm in the chaos
This was the last chance for the sprinters until Friday's stage 13 as they now have to hang on through Sunday's cobbled route and three challenging days in the Alps.
It led to a frenzied finish in Amiens for most, although Groenewegen once again showed remarkable calm, waiting until he had a clear line before displaying a superb turn of speed to draw level with Gaviria, swing round Greipel and win by a bike length.
"Sagan started very early and it was a bit messy, but I surged ahead - it was a good opportunity and I seized it," said Groenewegen.
He now joins Gaviria and Sagan on two stage victories in this year's Tour, with three more sprint stages to come - including the final day on the Champs Elysees, where Groenewegen will try to make it back-to-back wins in Paris.
Sagan is a more versatile rider than those two, who are pure sprinters, however, and could well challenge on Sunday's cobbled stage, having won this year's Paris-Roubaix.
He faded after leading out the sprint, but Gaviria's relegation ensures he extends his lead in the points classification, with the world champion already looking on course for a record-equalling sixth green jersey.
When Tour debutant Gaviria found his way blocked by Greipel on the left he side-swiped the German with his head, while Greipel was penalised for leaning his head into compatriot Nikias Arndt earlier in the sprint, leading to both Gaviria and Greipel being relegated to the back of the front finishing bunch.
Familiar woes for Cavendish
Cavendish, 33, has proven to be adept at winning bunch sprints both from the back of a dominant lead-out train and by picking the right wheel to follow during his 30 Tour stage victories.
However, both skills have not been evident as he struggles to close in on Belgian great Eddy Merckx's record of 34 stage victories.
Again the Dimension Data train broke apart after leading the race into the final stages and again Cavendish found himself swamped, despite having been on Sagan's wheel.
He has been unlucky too - briefly touching wheels with Groenewegen here - but he was already out of contention by then and is running out of time in this Tour to add to his tally.
Critical cobbles on stage nine
Sunday's stage nine sees the race tackle 15 cobbled sections totalling 22km, including sectors that feature on the Paris-Roubaix one-day race, with the stage also ending in Roubaix.
In his stage-by-stage guide for BBC Sport, Cavendish said: "This is a stage for one of the one-day classics specialists in the peloton.
"We don't do any of the hardest five-star sectors that feature in Paris-Roubaix but there are definitely some four-star sectors. Every one of the general classification favourites will be up there with their teams trying to not lose time."
Stage eight result
1. Dylan Groenewegen (Ned/LottoNL-Jumbo) 4hrs 23mins 36secs
2. Andre Greipel (Ger/Lotto-Soudal) same time
3. Fernando Gaviria (Col/Quick-Step Floors)
4. Peter Sagan (Svk/Bora-Hansgrohe)
5. John Degenkolb (Ger/Trek-Segafredo)
6. Alexander Kristoff (Nor/Team UAE Emirates)
7. Arnaud Demare (Fra/Groupama-FDJ)
8. Thomas Boudat (Fra/Direct Energie)
9. Nikias Arndt (Ger/Sunweb)
10. Mark Cavendish (GB/Team Dimension Data)
General classification after stage eight
1. Greg van Avermaet (Bel/BMC Racing) 32hrs 43mins 00secs
2. Geraint Thomas (GB/Team Sky) +7secs
3. Tejay van Garderen (US/BMC Racing) +9secs
4. Philippe Gilbert (Bel/Quick-Step Floors) +16secs
5. Bob Jungels (Lux/Quick-Step Floors) +22secs
6. Rigoberto Uran (Col/EF Education First) +49secs
7. Alejandro Valverde (Spa/Movistar) +55secs
8. Rafal Majka (Pol/Bora-Hansgrohe) +56secs
9. Jakob Fuglsang (Den/Astana) +57secs
10. Richie Porte (Aus/BMC Racing) same time
12. Chris Froome (GB/Team Sky) +1min 6secs
13. Adam Yates (GB/Mitchelton-Scott) same time