Dimuth Karunaratne's century could not prevent South Africa from completing a 2-0 series win on the third day of the second Test against Sri Lanka at the Wanderers Stadium in Johannesburg on Tuesday.
South Africa won by 10 wickets after Sri Lanka were bowled out for 211 in their second innings. Set to make 67 runs to win, the hosts sealed their victory half an hour after lunch.
Karunaratne, the Sri Lankan captain, made 103 after starting the day on 91. His dismissal started a collapse in which Sri Lanka lost their last six wickets for 35 runs.
Lungi Ngidi took four for 44 and fellow fast bowler Lutho Sipamla ripped through the tail to take three for 40.
Karunaratne and Niroshan Dickwella started brightly after Sri Lanka resumed on 150 for four. Karunatne went to a 123-ball century with two successive off-side boundaries off Anrich Nortje but an attempted pull off the same bowler looped off a top edge to backward square leg.
Ngidi followed up with the wicket of Dickwella in the next over when a leading edge carried to mid-off and there was minimal resistance from the rest of the batting.
Aiden Markram batted aggressively at the start of the final innings but escaped when he edged a loose drive against Vishwa Fernando with his score on 14 in the last over before lunch. Kusal Mendis dived forward from second slip and appeared to take a good catch but a television review showed he had taken the ball on the bounce.
Markram finished on 36 not out while Dean Elgar followed up his 127 in the first innings with 31 not out. Elgar made 253 runs in the series and was only dismissed twice.
It was South Africa's first Test series win since they defeated Pakistan 3-0 in South Africa in 2018/19. A surprise 2-0 home defeat against Sri Lanka in the same series started a sequence of three successive series losses.
South Africa will depart soon for their first series in Pakistan since 2007/08. The first of two Tests starts in Karachi on January 26.
Sri Lanka will return home on a chartered flight and go straight to Galle, where they will play two Tests against England, starting on January 14.
Sri Lanka were hit hard by injuries in South Africa. Four players were injured during the first Test and could not play in Johannesburg while leading fast bowler Suranga Lakmal and opening batsman Oshada Fernando were unable to play in either match because of injuries.