Cape Town - The Proteas are in complete control in the second Test at Newlands after ripping through the Sri Lankan batting line-up in less than two sessions on Tuesday.
LIVE: SA V SRI LANKA, DAY 2
The visitors were bowled out for 110 on day two, with Kagiso Rabada (4/37) and Vernon Philander (4/27) the chief destroyers.
At stumps, the Proteas were 35/0 in their second innings, leaving them with a massive lead of 317 going into Wednesday's third day.
The Proteas took eight wickets in the final session with both Rabada and Philander reaching milestones.
Rabada reached 50 Test wickets in the first over after tea while Philander became the eighth South African to take 150 Test wickets.
There would have been calls for Proteas captain Faf du Plessis to enforce the follow-on, but he declined as the South Africans came out to bat for the final hour of the day.
At sumps, Stephen Cook was 15* and Dean Elgar 19*.
The Proteas were earlier dismissed for 392 on the stroke of lunch before working hard for just two Sri Lankan wickets in the middle session.
But then, after tea, the wheels came off for the visitors when Rabada had opener Dimuth Karunaratne (24) well caught at backward point by Temba Bavuma. That was Rabada's second wicket of the innings after he had already got rid of Kaushal Silva for 11.
Rabada also removed captain Angelo Mathews (2) and Dinesh Chandimal (4) after finding their outside edges while Keshav Maharaj had his second when he had Dhananjaya de Silva out LBW for 16.
Maharaj had earlier removed Kusal Mendis in the final over before tea.
The last four wickets all went to Philander, who skittled the Sri Lankan tail.
Rangana Herath (1), Suranga Lakmal (0), Lahiru Kumara (4) and Nuwan Pradeep (0) all fell within the space of 12 Philander deliveries.
In the morning session Quinton de Kock reached his third Test century as the Proteas were bowled out for 392 with the final ball before lunch.
After hitting the first ball of the day for four, South Africa's wicketkeeper then ticked along for the next 10 overs before reaching three figures.
It came via an inside edge for four, but it didn't matter to the 24-year-old, and the celebration that followed was intense, to say the least.
Perhaps a little over-excited, the left-hander had a momentary lapse in concentration just three balls later when he edged a wide one from Lahiru Kumara (6/122) to be caught behind and be dismissed for 101 off just 124 balls.