Thilan Samaraweera and new cap Dinesh Chandimal shared a century partnership as Sri Lanka made a strong recovery on the first day of the second Test match at Kingsmead on Monday.
Sri Lanka finished the day on 289 for seven, with Samaraweera (86 not out) and Chandimal (58) adding 111 for the sixth wicket after Marchant de Lange, South Africa's new fast bowler, had ripped out three of Sri Lanka's leading batsmen.
De Lange took another wicket in the last over of the day when he had Thisara Perera caught at short leg to finish with four for 60 in his first day in Test cricket.
De Lange, 21, who received a late call-up after Vernon Philander was ruled out by a knee injury, had Sri Lanka in trouble at 162 for five on a good batting pitch after dismissing Tharanga Paranavitana, Kumar Sangakkara and Angelo Mathews.
But De Lange's efforts on a hot, humid day were stymied by Samaraweera and Chandimal.
Samaraweera made a bright start but scored only 23 runs between lunch and tea as he settled into an anchor role. He made his 86 runs off 218 balls with ten fours.
Samaraweera was caught and bowled by leg-spinner Imran Tahir when he was on 50 but gained a reprieve when Tahir was no-balled. He also survived a stumping chance to Mark Boucher off Tahir when he had 63.
Veteran Sri Lankan batsman Mahela Jayawardene became the ninth batsman and first Sri Lankan to reach 10,000 runs in Test cricket when he opened his scoring with a single.