Thisara Perera scored 69 not out to secure Sri Lanka’s first win from four one-day internationals (ODI) in Kimberley on Friday.
He shared an unbeaten 58-run partnership with Angelo Mathews to lead his team to victory by five wickets with eight balls to spare.
Despite losing the early wicket of Upal Tharanga (6), who got a top edge off Lonwabo Tsotsobe to be caught behind, Sri Lanka got off to a rapid start.
Tillikaratne Dilshan and Kumar Sangakkara put on 83 runs off 71 balls before Alviro Petersen timed his jump to perfection, just inches short of the boundary rope, to remove Sangakkara for a well-played 32 off 31 balls.
Dilshan made a run-a-ball 87, which included nine fours and two sixes, until his longest innings of the tour was brought to an end by JP Duminy, pouching a sharp catch at short cover.
While Dilshan and Sangakkara were at the crease, Sri Lanka appeared to be in the driving seat but once they were gone, the required run rate gradually increased.
It was left to youngsters Dinesh Chandimal and Lahiru Thirimanne to try and accelerate but they only managed 24 runs off 35 balls, before Thirimanne departed for 13.
Chandimal, who has been a shining light for Sri Lanka on this tour, reached his second half century of the ODI series, before Lonwabo Tsotsobe bowled him out for 59.
When it looked all over for the visitors, they were given many a life line as South Africa’s fielding deteriorated into a comedy of errors.
Perera surprised with the fastest 50 of the match, coming off 30 balls, as he lambasted the attack, ably supported by Mathews, who was unbeaten on 21.
Tsotsobe returned the best bowling figures, taking three for 51 but dropped three catches, one off his own bowling.
Earlier, South Africa raced to 242 for three but then collapsed to lose four wickets for 47 runs and finished with 299 for seven.
Graeme Smith found the middle of his bat for the first time in the series and had the capacity crowd on their feet for his 45th ODI half century.
Although he had not scored an ODI century since 2009, Smith batted magnificently for his run-a-ball 69, stroking seven fours and a six. His soft dismissal was disappointing as he looked to work a delivery from Lasith Malinga to the leg side but found the hands of Dilshan instead.
Debutante off-spinner Sachithra Senanayake was brought on as early as the fourth over to bowl his off breaks after Smith and Petersen got off to a flying start.
They put on 84 runs, off 80 balls, for the first wicket before left-arm spinner Rangana Herath struck with his first delivery, dismissing Petersen for 37.
Smith continued his run-fest and, together with AB de Villiers they were a delight to watch. They combined to put on 87 runs, off 65 balls for the second wicket. Their stand included seven fours and four sixes.
Colin Ingram (1) failed for the second time in a row after being trapped lbw to Nuwan Kulasekara.
Dilshan used seven bowlers as he tried in vain to stem the flow of runs. De Villiers took 19 runs off one of the skipper’s own overs, as he hammered him for two sixes and a four to bring up his 50 off 31 balls.
De Villiers and Duminy added 70 runs off 85 balls, and after Duminy’s dismissal (36) the run-rate finally began to slow.
De Villiers (96) was dismissed off a slower ball from Perera, removing his middle stump to deny him his century.
Sri Lanka scored the highest total ever made on this ground after Pakistan made 300 against Sri Lanka in 1997/1998. — Sapa