South African fast bowlers Dale Steyn and Vernon Philander plunged Sri Lanka into trouble on the second morning of the first Test at Kingsmead on Thursday.
Sri Lanka were 133 for six at lunch, still 102 runs behind South Africa's first innings total of 235. They lost five wickets in adding 84 runs during the morning.
Steyn and Philander did the early damage, taking three wickets in the first ten overs of the morning, before fellow fast bowlers Duanne Olivier and Kagiso Rabada followed up with a wicket each.
Steyn struck in the third over of an overcast day when Oshada Fernando went across his stumps and was given out leg before wicket for 19. After consultation with captain Dimuth Karunaratne he decided not to seek a review, although replays showed the ball was missing his leg stump.
Philander claimed the key wicket of Karunaratne, who was trapped leg before wicket for 30 in the next over.
Philander followed up by having Kusal Mendis caught at second slip for 12 before Olivier, with his second ball of the day, had Niroshan Dickwella caught at third man off a leading edge for eight.
Kusal Perera and Dhananjaya de Silva, Sri Lanka's last recognised batsmen, added 43 runs for the sixth wicket, both playing aggressive strokes, before De Silva hooked Rabada to fine leg to be out for 23 in the last over before lunch. Perera was unbeaten on 37.