Kagiso Rabada claimed match figures of 10-92 as South Africa sealed a series victory over Sri Lanka with a 282-run win in the second Test in Cape Town.
With Sri Lanka resuming on day four at 130-4, chasing a theoretical 507 to win, paceman Rabada took 6-55 as the tourists were dismissed for 224.
Sri Lanka lost their final six wickets for 80 runs with Vernon Philander (3-48) claiming the match-winning wicket.
The win gives the hosts an unassailable 2-0 lead in the three-match series.
After centuries from Dean Elgar (129) and Quinton de Kock (101) had helped the Proteas amass 392 in their first innings, Sri Lanka were bowled out for 110 on day two.
South Africa then declared at 224-7 before tea on day three at Newlands, leaving themselves more than seven sessions to bowl Sri Lanka out.
The tourists had reached 144-4 in their second innings but when 21-year-old Rabada removed wicketkeeper Dinesh Chandimal (30) and captain Angelo Mathews (49), victory soon followed.
It is South Africa’s third straight Test series win since losing their number one ranking at the start of 2016.
However, it was the final appearance for pace bowler Kyle Abbott, who is turning his back on international cricket to join English county side Hampshire on a long-term deal as a Kolpak player, as is batsman Rilee Rossouw who was in the Test squad but not the final XI.
They follow several other Proteas players who have signed for county sides under the Kolpak ruling, which allows players from countries with associate trade agreements with the European Union to feature as non-overseas players.
The third and final Test starts on January 12 in Johannesburg. (BBC Sport)