Daijiro Katoh won the 250cc South African Grand Prix by just 0.083secs from Marco Melandri after the injured Italian caught - and almost passed - the Japanese rider on the last corner of the last lap.

Pole position holder, and the run-away winner in Japan, Katoh got swamped by the Aprilia's of Melandri and Harada at the Start with the Japanese rider behind his young teammate, with Katoh in third and Locatelli fourth.

Katoh soon made his move past Harada and attempted to pass Melandri at the first corner, only for the Italian to hold the inside line. Katoh crawled all over the injured Melandri on the next lap, before finding his way past and into the lead at the first corner on lap 4.

The order was: Katoh from Melandri, Harada, Locatelli, Porto and Ulsterman Jeremy McWilliams, who had been fourth fastest in the morning warm-up, sixth.

By lap 5 Katoh had pulled out a lead of 2.358secs from the chasing Aprilia's - which were now lead by Harada, the ex-250cc champion having been just 0.061secs off Katoh's pace in final qualifying.

On lap 7 McWilliams made his move on Sebastian Porto, surprising the Argentinean with a neat passing manoeuvre after having pressured the #9 Yamaha from the start.

By lap 9 of 26 Marco Melandri was back at the head of the Aprilia trio in second - but nearly 4secs behind Katoh, who was the only rider on the track setting 1min 37secs lap times and consistently 0.5secs quicker than his nearest challenger.

Meanwhile, Ivan Silva was given a black flag for not coming into the pits to serve his stop-go penalty.

Positions remained largely unchanged at the head of the field, although by lap 15 Katoh had eased his pace off slightly, while Melandri and Harada stepped their pace up - but not by enough to trouble Katoh at that stage.

Meanwhile, the main battle was between McWilliams (fifth), Porto and Matsudo, who were by now nose to tail, with McWilliams having been unable to shake off Porto after passing him in the early stages of the race.

With 9 laps to go Melandri continued to catch Katoh, surprisingly (given Melandri's shoulder injury and Tetsuya Harada's known pace) Harada was left in his wake - and began falling into the clutches of fourth placed Roberto Locatelli.

8 to go and Katoh's lead was reduced ever smaller (to 2.65secs) by Melandri, the Italian setting lap times consistently faster than Katoh, despite the Japanese rider being given the 'hurry-up' by his Telefonica MoviStar Honda team.

4 laps to go and Melandri had reduced the gap to 1.7secs and looked capable of doing the impossible - beating Katoh.

2 to go and Katoh began catching backmarkers and the gap was down to 1.2secs - until Melandri was held up behind Cesar Barros - who was 'uncooperative' as the Italian gave his all to chase down Katoh.

Into the last lap and Melandri had cut the gap down to just 0.8secs - and closing. By the final corner Melandri was right on the back wheel of Katoh's machine and tried to go around the outside on the rush to the line.

However, he had simply ran out of time and Katoh held on for victory - one more lap and the Italian would almost certainly have won.

Full classification to follow...

1. Katoh 42mins 31.371secs
2. Melandri +0.083secs
3. Harada +15.806secs
4. Locatelli +17.666secs
5. Nieto +34.031secs
6. McWilliams +34.233secs
7. Porto +34.312secs
8. Rolfo +35.074secs
9. Matsudo +35.185secs
10. Hofmann +51.599secs
11. Yuzy +53.805secs
12. Guintoli +54.068secs
13. Checa +54.475secs
14. Nohles +55.295secs
15. Debon +57.738secs