Vernon Philander and Kagiso Rabada have put South Africa in command by reducing Sri Lanka to 80 for 4 before the second day came to a premature end due to bad light.
Earlier, a fiery spell from Nuwan Pradeep had the hosts on the mat as they lost their last 7 wickets for only 80 runs to be dismissed for 426. Resuming the day on 338 for 3, the first-day centurion Hashim Amla and Duanne Olivier started the proceeding in hope of consolidating on the solid platform.
However, they could add only eight runs before Angelo Mathews dismissed Olivier (3) to make early inroads for his team. Five overs later, Pradeep jolted the hosts by dismissing Faf du Plessis and Temba Bavuma inside three balls to leave them reeling at 364 for 6. Three runs later, Pradeep struck again to dismiss Amla before sending back Philander to reduce South Africa to 378 for 8. Wayne Parnell and Quinton de Kock then saw off the remaining overs before the lunch was taken. De Kock scored 34 to help the Proteas cross the 400-run mark and was the last South Africa wicket to fall for 426.
In reply, the visitors began disastrously again as Philander had Dimuth Karunaratne caught behind for 0 in the first over. A 47-run partnership between Kausal Silva and Kusal Mendis steadied the ship before the Proteas pacers made merry on a lively Wanderers pitch. The partnership came to an end when Silva edged a brilliant delivery from Rabada to the wicketkeeper.
Rabada struck again when Mendis edged a bouncer to the gully to leave his team reeling at 62 for 3. Eight runs later, Dhananjaya de Silva, looking to play an ambitious drive off a wide delivery from Philander, was caught brilliantly at the backward-point by Bavuma. Angelo Mathews (11) Dinesh Chandimal will start the proceedings with the bat on the third day.
Sri Lanka 80 for 4 (Mathews 11*, Chandimal 3*) trail South Africa 426 (Duminy 155, Amla 134, Pradeep 4-78, Kumara 4-107) by 346 runs