An explosive unbeaten 85 from David Miller and some hostile bowling by the fast bowlers helped South Africa to beat Sri Lanka by 56 runs in Pallekele on Friday and stay alive in the five-match series.
South Africa defended their moderate total of 223-7 by dismissing Sri Lanka for 167 in the 44th over, despite Thisara Perera hitting Robin Peterson for 35 runs off the 33rd over, the second most expensive in ODI history.
The left-hander hit five sixes and a four, with a wide off the second ball adding to the carnage.
Much of the damage had been done earlier however, with fast bowler Lonwabo Tsotsobe taking four for 22, well supported by Morne Morkel who went wicketless but put the Sri Lankan batsman under pressure.
The visitors struggled for much of their innings but were given much needed impetus by Miller whose unbeaten 85 off 72 balls included five sixes and four fours.
He paced his innings until the 47th over when, along with Ryan McLaren scored 38 off the final two overs, with their unbroken eighth wicket partnership putting on 69 runs.
South Africa, who had lost the first two one dayers, had earlier been pegged down by spinner Ajantha Mendis who finished with three for 35.
Their bowlers took advantage of a pitch that had pace and bounce, with Morkel unlucky not to be among the wickets following some unplayable deliveries.
Tsotsobe, playing his first game of the series, reaped the rewards from the other end, getting rid of Tillakaratne Dilshan, Upul Tharanga and Kumar Sangakkara in his first spell before returning to claim the wicket of Sri Lanka captain Angelo Mathews.
The Sri Lankan innings was in tatters at 93 for seven, but Perera's cameo innings of 65 off 49 balls delayed the inevitable.
He was caught on the long-off boundary going for his sixth six, having also hit five fours, and along with Rangana Herath put on 72 for the eighth wicket.
The fourth match will be played at the same venue on Sunday, with the fifth and final match in Colombo.