Thilan Samaraweera and new cap Dinesh Chandimal shared a century partnership as Sri Lanka recovered to be 289 for seven at stumps on the first day of the second Test match against South Africa at Kingsmead.
Samaraweera (86no) and Chandimal (58) added 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 4-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 5 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.
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.
The 34-year-old made 31 before he was bowled by Morkel.