The Jamaican is seeking his fourth gold in the event before retiring next week after the sprint relay.
Usain Bolt booked his place in the World Championships 100 metres final on Saturday but he was given a double scare by American Christian Coleman, who beat him in their semi, and the stadium scoreboard, which initially left him off the results.
The Jamaican, seeking his fourth gold in the event before retiring next week after the sprint relay, had a better start than in the heats but it was made to look awful by the explosion of Coleman.
TRT World's Sarah Morice reports from London
The American, fastest man in the world this year with 9.92 seconds, poured on the pressure and crossed first in 9.97. Bolt had to work hard to close the gap.
He eased up only over the last few strides and though it was only a semi-final he will not be happy to have been beaten across the line in a 100m race for the first time in four years.
Bolt clocked 9.98 – the second-fastest time of the night – but initially Andrew Fisher of Bahrain was shown as second with Bolt not in the first six.
South Africa's Akani Simbine, who has been in hot sub-10 form all season, made the semis only as a fast loser having finished fourth in his heat on Friday but he had a bullet start in the first of the three semis on Saturday and maintained his form to cross first in 10.05.
American Justin Gatlin, again roundly booed at the start because of his previous doping suspensions, was just behind in 10.09.
Yohan Blake, the 2011 champion, showed he remains a threat despite rarely running this season, as he won the second heat in 10.04.
New British champion Reece Prescod gave the 56,000 crowd something to cheer when he blasted the last 20 metres to snatch second and automatic qualification for his first major final which takes place later on Saturday.