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.