South Africa clinched a three-nil series win over Sri Lanka as they won a rain-interrupted third ODI by four runs via the Duckworth/Lewis method in Bloemfontein on Tuesday.

With only two matches to play it was a great series victory for the home side under new captain AB de Villiers who was unbeaten at the crease with Albie Morkel when the heavens opened up in the 34th over when the Proteas were 179 for five in pursuit of Sri Lanka's 266 for nine.

It was the visitors who won the toss and batted, with a solid opening stand of 94 laying the platform for their competitive score. Openers Upul Tharanga and Tillakaratne Dilshan showed their intent early on, but the usually aggressive Dilshan was happy to play a more patient innings alongside his partner.

Tharanga (58) was in fine form and moved to his first half-century of the series before he was caught of the bowling of Robin Peterson by Colin Ingram who came into the Proteas side in the place of Jacques Kallis who was rested. Soon after Tharanga vanished, Dilshan (33) also departed when he top-edged part-time spinner JP Duminy to Dale Steyn who ran in from the square-leg boundary.

Dinesh Chandimal and Kumar Sangakkara then added 53 for the third wicket before the former skipper suffered an unlucky run out. He and Chandimal set off for a single after the latter pushed it to point, but they didn't account for Faf du Plessis who embodied shades of Jonty Rhodes as he dived to his left and threw the stumps down with a direct hit which left Sangakkara short.

Sri Lanka's other former skipper Mahela Jayawardene suffered a similar fate when he too was run out, but this time it was by the hand of Ingram who was equally deadly with the direct hit.

All the batsmen managed to get starts and with Sri Lanka keeping the run-rate up at around five per over and with the possible addition of some late hitting would have been looking at around 280, but South Africa's bowlers managed to pull it back with Lonwabo Tsotsobe (one for 40) in particular, impressing at the death.

Promoted up the order Nuwan Kulasekara (40) attempted to push the run-rate up with a few boundaries, but when Morne Morkel came back for a death spell, the all-rounder played all around a yorker and saw his stumps go crashing.

The final over provided some excitement too as Dale Steyn first bowled Lasith Malinga (two) with a perfect yorker and then off the final ball Kosala Kulasekara sacrificed his wicket going for an extra run as he was run out by de Villiers for 19.

South Africa's chase stuttered early on and the calls for Graeme Smith's axing would have continued to grow as the former captain failed for the third time in the series when he was bowled by a brilliant Lasith Malinga yorker for two.

Ingram (13) was very aggressive and smashed three superb boundaries, but he too fell victim to Malinga who outfoxed him with a slower delivery which snuck through his defences. South Africa were then in a spot of bother when Alviro Petersen (17) was given out lbw playing a reverse sweep to Dilshan and despite his disappointment, the DRS couldn't save the opening batsman.

It was up to JP Duminy and Faf du Plessis to then put a partnership together and they did just that as they added 61 for the fourth wicket and looked very comfortable in the middle. Duminy, however, failed to push on after reaching 25 when he was run out to a direct hit from Nuwan Kulasekara at mid-on. The replays showed the call was extremely tight and third umpire Billy Doctrove decided he'd seen enough evidence to give Duminy out, but there were huge protests in the Proteas dressing room who interpreted the replay differently. Nonetheless, Duminy had to depart and du Plessis then showed his worth in the side by notching up his third ODI fifty, while batting with a hamstring injury.

The injury, however, proved his downfall when he too was found short of his ground and run out by Angelo Mathews for 72. With rain being a possible threat, de Villiers looked to up the run rate and blasted his way to 39 off 36 balls to help South Africa pass the Duckworth-Lewis par score at the end of the 34th over when the rain came and brought an early end to the match.