Faf du Plessis fell agonisingly short of a double hundred but a career-best 199 put South Africa in command after day three of the first Test against injury-plagued Sri Lanka.
After Temba Bavuma departed in bizarre circumstances for 71, walking after a caught behind appeal even though replays indicated he had made no contact with the ball, Du Plessis moved serenely to his 10th Test hundred.
Lahiru Kumara became Sri Lanka’s latest injury concern at Centurion, joining Kasun Rajitha and Dhananjaya de Silva, stretching the tourists’ bowling resources even further as Du Plessis continued to increase South Africa’s lead.
The former captain missed out on 200 after shovelling to mid-on off Wanindu Hasaranga, the pick of Sri Lanka’s bowlers with four for 171, while Keshav Maharaj’s Test-best 73 helped South Africa to 621 all out.
Lungi Ngidi then bowled the Sri Lanka captain, Dimuth Karunaratne, with a delivery that kept low before finding the outside edge of No 3 Kusal Mendis, with Rassie van der Dussen taking a simple chance at first slip.
Kusal Perera (33no) and Dinesh Chandimal (21no) hung in to take Sri Lanka to 65 for two at stumps but they still trail by 160 runs.