South Africa's Desmond Mokgobu crossed the tape three seconds ahead of Japan's top finisher Hayato Sonoda to win the Beppu-Oita Marathon on Sunday.

Sonoda led the race at the 30-km mark but was overtaken 5 km later by Mokgobu, who finished the 42.195-km course from Takasakiyama-Umitamago in Oita Prefecture to Oita City Athletic Stadium in 2 hours, 9 minutes, 31 seconds.

As the first domestic runner across the line, Sonoda earned a spot in next year's Grand Championship, a qualifying race for Japanese runners for the 2020 Tokyo Olympics.

Despite beating his previous personal best of 2:10:40 from the 2016 Fukuoka International Marathon, Sonoda said he had mixed feelings following the race.

"Although I set a personal best, I didn't achieve my goal of winning the race, so I'm feeling a mixture of happiness and disappointment," Sonoda said.

Shohei Otsuka finished third with a time of 2:10:12.