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 on Wednesday.
Rabada, bowling at more than 150 km/h 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 (two for 14) and Anrich Nortje (two for 25), 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 hit a dazzling 94 off 70 balls, with 17 fours and a six, but the South African batting fell away 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.
Rabada showed from the first over of the second innings that South Africa's policy was to try to blast through the Sri Lankan batting.
In striving for pace, he was erratic at times, sending 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.
"KG (Rabada) came out with great intent," said De Kock, whose wicketkeeping ability was tested by Rabada's express deliveries.
"It is the fastest he has bowled in quite a while."
There was no respite when the new ball bowlers were rested, with Nortje having Kusal Perera caught off a leading edge off his first ball.
Nortje, in his second international match, 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 came back to take two more wickets in his second spell.
With South Africa in total control, David Miller took over the wicketkeeping gloves in the final overs in a clear indication that he will take the role of second wicketkeeper at the World Cup, starting in May.
"We are working with him to make him a better 'keeper," said De Kock.
Sri Lanka captain Lasith Malinga made no attempt 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.