Green jersey holder Peter Sagan won a third stage at this year's Tour de France as reigning champion Chris Froome retained the yellow jersey.
Slovak Sagan beat Alexander Kristoff in a photo finish, with the Norwegian initially thinking he had won, after a chaotic end to stage 16 in Bern.
Manxman Mark Cavendish, victorious on Saturday, was in contention with 500m left, but could not mount a challenge.
Froome finished safely to keep his overall lead of one minute 47 seconds.
Britain's Adam Yates remains two minutes and 45 seconds adrift of Froome, who is chasing a third Tour de France victory.
Barring a withdrawal, world champion Sagan's win means he will keep the sprinters' green jersey for a fifth consecutive year after establishing an unassailable lead over Cavendish.
After a tough mountain stage in the Jura region of France on Sunday, the 209km stage into Switzerland's capital was considered an easier day.
But a category four climb, a cobbled section 2km from the finish and the tight Bern streets made it a frantic end to another hot day on this year's Tour.
Kristoff gets timing all wrong
Tinkoff's Sagan, who had not won a Tour stage in three years prior to 2016, said his latest victory showed that "destiny was turning his way".
But once a breakaway from Etixx-QuickStep's Tony Martin and Julian Alaphilippe had been swallowed up by the peloton, a third photo finish in this year's race showed the win was as much down to Kristoff's misjudgement as Sagan's lunge for the line.
The Katusha rider celebrated at the end, with one report of him giving a victory interview to Norwegian television before the result was confirmed.
"If I had thrown the bike, I was in front," Kristoff told ITV4. "I didn't really pay attention at the line so it was a pity."
Fabian Cancellera was among those who were edged out in the final straight, denying the Swiss rider a victory in his home city on his final Tour de France.
But the 35-year-old, who has won five Tour stages in his career, said he was "missing a last little something" as Sagan powered home.
'Tired' Froome relishing rest and mountain return
The fact Froome finished 13th on such a quick finish to the stage was testimony to the defending champion's all-round ability as he sought to avoid danger.
He failed to increase his lead over his nearest challengers for the general classification, yet he appeared relieved to head into Tuesday's rest day with a commanding lead ahead of a final week in the Alps.
The likes of Movistar's Nairo Quintana, who remains two minutes and 59 seconds behind Froome, have left it late to challenge for the yellow jersey.
There are three mountain stages left, in addition to an uphill time trial on Thursday.
"The last few kilometres was pretty sketchy," Froome told ITV4. "There was lots of road furniture, lefts and rights, and then there were the cobbles - we were just trying to stay out of trouble.
"I'm pretty tired to be honest, I'm definitely looking forward to a rest day, and then the Alps.
"The team is in fantastic shape. I don't think we have been at this point and still had nine riders left. The morale is good, we still have the jersey to ride for and I'm looking forward to getting back into the mountains."
Stage 16 result
1. Peter Sagan (Svk/ Tinkoff) 4hrs 26mins 2secs
2. Alexander Kristoff (Nor/Katusha) same time
3. Sondre Enger (Nor/IAM Cycling)
4. John Degenkolb (Ger/Giant)
5. Michael Matthews (Aus/Orica)
6. Fabian Cancellara (Swi/Trek)
7. Sep Vanmarcke (Bel/LottoNL)
8. Maximiliano Richeze (Arg/Etixx - Quick-Step)
9. Edvald Boasson Hagen (Nor/Dimension Data)
10. Greg Van Avermaet (Bel/BMC Racing)
General classification after stage 16
1. Chris Froome (GB/Team Sky) 72hrs 40mins 38secs
2. Bauke Mollema (Ned/Trek) +1mins 47secs
3. Adam Yates (GB/Orica) +2mins 45secs
4. Nairo Quintana (Col/Movistar) +2mins 59secs
5. Alejandro Valverde (Spa/Movistar) +3mins 17secs
6. Romain Bardet (Fra/AG2R) +4mins 04secs
7. Richie Porte (Aus/BMC Racing) +4mins 27secs
8. Tejay van Garderen (US/BMC Racing) +4mins 47secs
9. Daniel Martin (Ire/Etixx - Quick-Step) +5mins 03secs
10. Fabio Aru (Ita/Astana) +5mins 16secs