A four-run Duckworth-Lewis method win saw South Africa take an unassailable 3-0 lead in the one-day international series against Sri Lanka.
Tourists Sri Lanka won the toss and chose to bat in Tuesday's match at Chevrolet Park, where they posted 9-266 from their 50 overs.
In reply, South Africa reached 5-179 from 34 overs, before rain forced a premature halt to proceedings in Bloemfontein.
A rate of 5.26 runs per over proved enough for the hosts to take the win and wrap up the series, with two matches remaining in Kimberley and Johannesburg.
Earlier, Upul Tharanga top scored for Sri Lanka, making 58 runs opening the batting.
With no player able to make a big haul in the innings, the tourists relied on regular scoring throughout the line-up to post a respectable total.
Tharanga's partner, skipper Tillakaratne Dilshan, made 33, while veteran Kumar Sangakkara (38) and newcomer Dinesh Chandimal (36) also contributed.
Number six batsman Nuwan Kulasekara reached 40, there were also starts for Mahela Jayawardene (15), Angelo Mathews (15) and Kosala Kulasekara (19).
Morne Morkel led the wicket-takers for South Africa with two scalps, accounting for key men Chandimal and Kulasekara.
Lonwabo Tsotsobe, Dale Steyn, Jean-Paul Duminy and Robin Peterson all had one apiece.
The hosts struggled initially in their run chase, with opener and former skipper Graeme Smith bowled by Lasith Malinga for just two.
Number three Colin Ingram could only make 13 and surviving opener Alviro Petersen went for 17, as the Proteas stumbled to 3-52.
Fortunately for the hosts, Faf du Plessis and Duminy turned things around with a 61-run partnership for the fourth wicket.
Du Plessis romped to a near run-a-ball half-century, making 72 off just 74 deliveries.
The stand was broken when Duminy was run out, but not before adding a quick-fire 25 runs from 34 balls.
Du Plessis was also run out five overs later, but AB de Villiers promptly picked up the baton.
The captain raced to 39 runs off 36 balls, alongside Albie Morkel (seven not out).
Together, the pair did enough to seal a narrow win with some help from the inclement weather.
Malinga led the Sri Lankan bowlers with two wickets, while the unlikely figure of Dilshan was the only other man to claim a victim when he trapped Petersen lbw.