(CNN) -- World and Olympic champion sprinter Usain Bolt had to battle hard to win the 100 meters race at the Diamond League meeting in Monaco on Friday.
The Jamaican, who will defend three titles at the World Athletics Championships in South Korea starting at the end of next month, was far from top form as he edged out compatriot Nesta Carter.
However, the 24-year-old still set his season's best time of 9.88 seconds despite his poor start to the race, while Carter clocked 9.90.
It was 0.3s slower than his world record and 0.1s behind the 2011 leading time by fellow Jamaican Asafa Powell, who heads the series' point standings.
"I came into the race but didn't execute well. I had to work hard and concentrate," Bolt told reporters after his final 100m warm-up before the August 27-September 4 world event in Daegu.
"There are some little things to work on. I have time before the world championships and I will continue to do my best. I'm almost back to 100% on the final 60m and I've got to work on the first half. I'll take it one step at a time and hopefully the next race will be better."
American Michael Rodgers was third in 9.96 ahead of a third Jamaican, Michael Frater, who clocked 10.01.
In the men's 400m hurdles, Olympic champion Angelo Taylor defeated fellow American Bershawn Jackson while Britain's David Greene was third.
Kenya claimed middle-distance victories as David Rudisha and Silas Kiplagat won the 800m and 1,500m respectively, while Britain's Mohammed Farah edged out U.S. runner Bernard Lagat in the 5,000m.
Americans dominated the women's 200m, with Carmelita Jeter (22.20) heading home world champion Allyson Felix (22.32) and Shalonda Solomon (22.63) while compatriot Bianca Knight was fourth in 22.71.