Peter Sagan became the first man to win three successive World Championship men’s road race titles with victory in Norway.
The Slovak, 27, pipped Norwegian Alexander Kristoff in a sprint finish, having barely featured among the lead riders in the 267.5km race in Bergen.
Australia’s Michael Matthews finished third and Britain’s Ben Swift fifth.
“It’s unbelievable. I’m very happy to be here again. It’s something special,” said Sagan.
Only four other riders – Italy’s Alfredo Binda, Belgians Rik van Steenbergen and Eddy Merckx, and Spain’s Oscar Freire – have won the world title three times.
Sagan was in 80th position as the riders approached the final climb up Salmon Hill, before putting himself in contention for the sprint.
Earlier, Frenchman Tony Gallopin made a break from the pack with 13km remaining, before being caught at the foot of the hill, and compatriot Julian Alaphilippe was also reeled in after attacking with 4km left.
In a bunch sprint, Sagan beat Kristoff by a matter of inches in a photo finish.
“It was not easy. Guys were changing in the front all the time,” added Sagan, who won the world title in Virginia, USA, in 2015 and Dohi in 2016.
“I tried to go with the breakaway and it came down to a sprint. It was unbelievable.
“Kristoff was racing at home so I’m sorry, but of course I’m happy to win.”
Swift, 29, told BBC Sport: “Sagan was incredible. All of us were trying a couple of moves because it was all over the place, but he did amazing.”
‘He’s getting better and better’ – analysis
Former Olympic champion Chris Boardman
It was an absolutely incredible piece of bike racing from Sagan. He just turns up with 300m to go, beautifully placed.
He found the right way and nudged his way through. He knew who he had to follow.
It’s just quality – he’s getting better and better.
World Championships men’s road race results:
1. Peter Sagan (Svk) 6hrs 28mins 11secs
2. Alexander Kristoff (Nor) same time
3. Michael Matthews (Aus)
4. Matteo Trentin (Ita)
5. Ben Swift (GB)
6. Greg Van Avermaet (Bel)
7. Michael Albasini (Swi)
8. Fernando Gaviria (Col)
9. Alexey Lutsenko (Kaz)
10. Julian Alaphilippe (Fra)