South Africa, having picked only five specialist batsmen, lost their last six wickets for 31 runs.
It looked dicey for a while in the middle overs, but the Proteas eventually managed to turn the screws on Sri Lanka to win the second Momentum ODI at SuperSport Park last night by 113 runs, after an inspired bowling display.
Earlier, all-rounder Thisara Perera had sparked a turnaround for Sri Lanka, taking 3/26 as the Proteas were bowled out for 251 after being sent in.
South Africa seemed set for a huge total when Quinton de Kock gave them a blazing start, smashing 94 off 70 balls.
But the innings changed dramatically when Perera, playing in his 150th One-Day International, had De Kock caught behind when the batsman tried to flick a ball outside his leg-stump, and the ball looped off a leading edge to wicket-keeper Niroshan Dickwella.
De Kock, who made 83 and 81 in his previous two One-Day Internationals, and had innings of 86 and 80 in two Tests against Sri Lanka, hung his head in disappointment after missing out on another chance of making a century.
At that stage, South Africa were 131/2 in the 21st over, scoring at better than six runs an over.
Perera followed up by having Rassie van der Dussen caught at deep midwicket for two before bowling Proteas captain Faf du Plessis with a ball which kept low.
Despite Du Plessis making 57 off 66 balls, the innings never regained its early momentum. South Africa, having picked only five specialist batsmen, lost their last six wickets for 31 runs.
In their reply, the visitors were in trouble early when keeper and opener Dickwella was out in an almost carbon-copy of De Kock’s dismissal, looping a ball high to the Proteas keeper, who didn’t make a mistake.
The South African bowlers kept up the pressure, and it was that man Kagiso Rabada (3/43), backed up by Lungi Ngidi (2/14), Anrich Nortjé (2/39), and who else but Imran Tahir (2/39) that put an end to the Sri Lanka innings and gave South Africa a 2-0 lead in the five-match series.