Former captain Faf du Plessis led South Africa to a dominant position as Sri Lanka suffered more injury blows on the third day of the first Test at SuperSport Park in Centurion on Monday.
Du Plessis made a career-best 177 not out as South Africa reached 565 for six at tea, a first innings lead of 169.
Sri Lanka, already without opening bowler Kasun Rajitha, who pulled up with a groin injury in the sixth over of the innings, lost fast bowler Lasith Kumara and leg-spinner Wanindu Hasaranga during an afternoon in which South Africa added 130 runs for the loss of one wicket.
Kumara left the field with what appeared to be a groin injury after bowling the first ball of a new spell soon after lunch, while Hasaranga landed on the ball while diving on the boundary almost immediately after dismissing Wiaan Mulder - Sri Lanka's only success between lunch and tea. Hasaranga returned to the field in time to bowl two overs before tea.
Sri Lanka were also missing Dhananjaya de Silva, who was ruled out of the rest of the two-match series with a grade two muscle tear after the first day's play. Although primarily a batsman, De Silva is also a useful off-spinner.
Because of the spate of injuries, captain Dimuth Karunaratne and Kusal Mendis were called into action as emergency bowlers.
Du Plessis shared a fifth wicket stand of 179 with Temba Bavuma, who made 71 before he flashed at a ball from the medium-paced Dasun Shanaka and immediately started walking back to the dressing room as the ball carried to wicketkeeper Niroshan Dickwella. Umpire Marais Erasmus was not called upon to make a decision.
Replays showed there had been no contact between bat and ball, with no spike showing on the ultra-edge. A clear gap was visible as the ball went past the bat.
The boundary which brought up Du Plessis' century also made the former captain the ninth South African to reach 4000 Test runs. His hundred was scored off 151 balls and included 15 fours.