Kagiso Rabada led a pace assault as South Africa defended a below-par total in the second one-day international against Sri Lanka at SuperSport Park to go 2-0 up in the five match series.
Rabada, bowling at more than 150 clicks at times, took three for 43 as Sri Lanka were bowled out for 138 in reply to South Africa's 251.
Rabada was backed up by fellow fast bowlers Lungi Ngidi and Anrich Nortje, while veteran leg-spinner Imran Tahir picked up two for 39.
"The way we responded in the field was exactly what we wanted," said South Africa captain Faf du Plessis after what he said was a disappointing batting performance.
Man of the match Quinton de Kock struck a blistering 70-ball 94, with 17 fours and a six, but the South African batting collapsed after it looked as though they were set to make more than 300 on a ground which frequently yields high totals.
Thisara Perera dismissed De Kock and took three for 26 as the Sri Lankan bowlers fought back. The last six South African wickets fell for 31 runs.
But in reply, Rabada showed from the first over of Sri Lanka’s innings that South Africa's policy was to try to blast through the opposition.
Rabada, while striving for pace, was erratic at times as he sent down three wides, including one that went far down the leg side for an extra four runs.
But Rabada hurried Niroshan Dickwella into a rash shot – his 100th one-day international wicket in his 68th match – and Ngidi bowled fellow opener Avishka Fernando.
There was no respite for the opposition when the new ball bowlers were rested, with Nortje having Kusal Perera caught off a leading edge off his first ball.
Nortje bowled seven overs in an unbroken spell, pulled off a direct-hit run-out of Kusal Mendis and trapped Oshada Fernando leg before four balls later.
Rabada then struck twice in his second spell.
Sri Lanka captain Lasith Malinga made no efforts to hide his disappointment with his team's batting after what he said was "a really good effort by the bowlers".
Malinga said it was not a case of analysing or discussing what had gone wrong.
"Each player knows their value. They have to come up and value their opportunity," he said.
With South Africa 2-0 up in the five-match series, the next two matches are in Durban and Port Elizabeth, where Sri Lanka won Test matches last month, on pitches which will give less assistance to South Africa's fast bowlers.