Two wickets each for lively South African seamers Kagiso Rabada and Vernon Philander left Sri Lanka reeling on 80 for four in their first innings when bad light brought a premature end to day two of the third and final test at the Wanderers on Friday.
Sri Lanka still trail South Africa by 346 on a wicket with plenty of pace, bounce and sideways movement, and will rely on the experienced duo of skipper Angelo Mathews (11 not out) and Dinesh Chandimal (3 not out) to rescue the innings.
The tourists had fought superbly to get themselves back into the game in the first two sessions of the day, restricting South Africa to 426 all out from their overnight 338 for three.
Yet with Rabada (2-26) and Philander (2-23) beating the bat at will on a responsive wicket, the tourists face a mighty challenge to stay in the game.
Philander struck first when he removed opener Dimuth Karunaratne for a duck in the first over as he edged to wicketkeeper Quinton de Kock, and later had Dhananjaya de Silva caught by Temba Bavuma at point for 10.
Rabada got sharp lift off the wicket and claimed his first scalp when he forced an edge from Kaushal Silva to De Kock when on 13, before a steep bouncer to Kusal Mendis (41) looped off a glove to JP Duminy.
Earlier, a magnificent spell of hostile fast bowling before lunch from Nuwan Pradeep (4-78) ripped through the South Africa middle-order as he recorded figures of four wickets for 15 runs in seven overs.
Pradeep claimed the prized wickets of home skipper Faf du Plessis (16) as he squared him up and Mendis held on to a catch at second slip.
Themba Bavuma’s wretched run continued when he was caught in the slips by Silva off Pradeep two balls later for a duck, before the tourists snared the big wicket of Hashim Amla for 134.
Amla had completed the rare feat of scoring a century in his 100th test but Pradeep brought the magnificent innings to a close when he coaxed an edge to Chandimal.
The seamer grabbed his fourth wicket when he had Philander caught by the wicketkeeper for a duck.