Justin Gatlin won his second world 100m title 12 years after his first to ruin eight-time Olympic champion Usain Bolt’s final individual race.
Bolt, who retires after next week’s 4x100m relay, was third behind American Gatlin, who clocked 9.92 seconds, and Christian Coleman (9.94).
Bolt’s 9.95 seconds equalled his best effort of 2017 but he always trailed.
Gatlin – banned twice for doping – was booed before the race and celebrated wildly, holding his hands to his ears.
The 35-year-old – in lane eight – was behind his compatriot Coleman from the blocks but wore down the margin in the closing 20 metres to take his first major title since 2005.
Great Britain’s Reece Prescod – who qualified for his first major final with an impressive time of 10.05 in the semi-final – finished seventh in 10.17.
Overtaking is allowed in nature