South Africa 302 (Elgar 127, van der Dussen 67, V Fernando 5-101) and 67 for 0 (Markram 36*) beat Sri Lanka 157 (Perera 60, Nortje 6-56) and 211 (Karunaratne 103, Ngidi 4-44)
Any momentum Sri Lanka had gained on day two, they squandered within the first 90 minutes of day three, losing their last six wickets for 35 runs as South Africa's quicks hunted relentlessly. Very briefly, there was the joy of Dimuth Karunaratne getting to his first hundred in South Africa, but this soon gave away to despair.
Anrich Nortje, Lungi Ngidi and Lutho Sipamla each produced menacing spells to ensure Sri Lanka would make no more than 62 in the morning session, leaving South Africa with just 67 to get. They hurtled to the target in 13 overs either side of lunch, with all ten wickets intact, sealing an emphatic 2-0 series victory.
Having begun in credit after their efforts the previous afternoon, there was mild hope that Sri Lanka would set a tricky target, particularly with Karunaratne appearing assured in the early overs. He started on 91, and struck consecutive fours in the third over of the day to raise his first century outside Sri Lanka since 2017, and his tenth overall.
But he had been occasionally troubled by the bounce Nortje was generating, at a rapid pace, and it was this extra bounce that brought his downfall on 103. Nortje pitched one just back of a length, and angled it into Karunaratne from around the wicket. The batsman attempted to swat it to the leg side, and the ball sailed off the top edge into the hands of square leg.
Overnight partner Nirsoshan Dickwella had been far less secure during his innings and was himself out the next over, a ball from Ngidi ballooning off his leading edge to cover as he attempted to work it to leg. He was out for 36, and the remaining wickets didn't take long to follow. Dasun Shanaka spooned Wiaan Mulder to mid-on. Wanindu Hasaranga played a startlingly awful heave against Sipamla and was bowled. Then in his next over, Sipamla claimed the two remaining wickets in the space of three balls.
Ngidi finished with 4 for 44, having also been excellent in the third session on day two. Sipamla picked up three, continuing a habit of wiping out the lower order in this series. It was Nortje's key wicket of Karunaratne, though, that swung the game definitively in South Africa's favour.
Dean Elgar and Aiden Markram then set South Africa confidently on track to their target in the five overs before lunch. Markram, who had the majority of the strike, did have one scare, when he edged Vishwa Fernando low towards the slip cordon. Kusal Mendis dived across to make what initially seemed like a good catch, only for replays to show that he may have grounded the ball briefly. The third umpire ultimately ruled it not out.
After the break, the pair cruised happily to the target. Elgar's batting was especially sprightly, as he made 31 not out off 27. Markram finished unbeaten on 36 off 53.
Sri Lanka may take very mild encouragement from the fact that they made South Africa bat twice for the first time in three matches at the Wanderers, and that their second-innings 211 was their highest total at this venue. The overall vibe from the tour, however, will be one of frustration that so many of their best players were injured, and disappointment that they could not scrap as hard as they had on their previous Test tour to the country.
Andrew Fidel Fernando is ESPNcricinfo's Sri Lanka correspondent. @afidelf