Seam bowlers Wiaan Mulder and Lutho Sipamla took two wickets each as South Africa bowled injury-hit Sri Lanka out for 180 to complete a handsome victory by an innings and 45 runs on day four of the first Test at Centurion Park on Tuesday.
The tourists resumed their second innings on 65 for two on a wicket that provided plenty of assistance for the seam bowlers and when dangerous opener Kusal Perera was out for 64, their hopes of saving the Test were realistically over.
Sri Lanka had suffered crippling injuries to their bowling attack in the Test and were also without middle-order batsman Dhananjaya de Silva for the second innings, a major concern for their home series against England that starts on January 14.
The tourists posted an impressive 396 in their first innings, but allowed South Africa to amass 621 in reply, and will need to find more potency with the ball ahead of the second Test that starts in Johannesburg on Jan. 3.
All-rounder Mulder (2-39) showed in Sri Lanka's first turn at bat that he was able to get movement off the wicket with his gentle medium pace and created a number of chances on the fourth morning before he finally got the reward.
An in-swinging delivery saw Dinesh Chandimal bowled for 25 before Niroshan Dickwella edged to wicketkeeper Quinton de Kock (10).
When Anrich Nortje (2-47) induced an edge from the blazing bat of opener Perera, the game was effectively up for the visitors with their score on 114 and five wickets down.
Dasun Shanaka (6) became the sixth wicket in the Test for debutant seamer Lutho Sipamla (2-24) as he also provided a catch for De Kock, and Vishwa Fernando was run out on the stroke of lunch.
South Africa bowled part-time spinner Aiden Markram after the interval in tandem with Keshav Maharaj in a bid to raise their slow over-rate and avoid a sanction from the International Cricket Council, but it lowered the intensity of their attack.
That allowed Sri Lanka's debutant all-rounder Wanindu Hasaranga to rack up a maiden Test half-century in only 46 balls, before he was caught in the deep off Sipamla for an excellent 59.