Brad Binder is the first South African to win a Grand Prix title in 36 years, since Jon Ekerold in the now defunct 350cc category in 1980.
Spaniard Jorge Navarro edged out the 21-year-old to victory on the finish line, but he got the second place he needed to seal the championship with four races still to go.
“Right now it doesn’t feel real yet,” said Binder.
“It came down to the final lap. Today we lost the battle but we won the war.”
Binder, on a KTM, qualified down in seventh, but quickly moved to the front of the race before becoming embroiled in a fight with Honda pair Navarro and Enea Bastianini for the win.
Italian Bastianini led until the final corner, but was swamped by Navarro and Binder with both celebrating as they crossed the line.
Binder, who has won five races this season, extended his championship lead to 106 points with just 100 left to race for.
He becomes the first person from his country to claim a world title since Jon Ekerold in the now defunct 350cc category in 1980.
MOTO3 CHAMPIONSHIP STANDINGS
1. BRAD BINDER (South Africa) KTM 249
2. Jorge Navarro (Spain) Honda 143
3. Enea Bastianini (Italy) Honda 139
4. Joan Mir (Spain) KTM 117
5. Nicolo Bulega (Italy) KTM 113
6. Fabio Di Giannantonio (Italy) Honda 111
7. Francesco Bagnaia (Italy) Mahindra 110
8. Romano Fenati (Italy) KTM 93
9. Niccolo Antonelli (Italy) Honda 81
10. Jakub Kornfeil (Czech Republic) Honda 80
11. Andrea Locatelli (Italy) KTM 65
12. Philipp OEttl (Germany) KTM 62
13. Aron Canet (Spain) Honda 60
14. Jorge Martin (Spain) Mahindra 56
15. Fabio Quartararo (France) KTM 56