Debutant Lungi Ngidi took the key wicket of India captain Virat Kohli as South Africa closed in on victory in the second test with the tourists reeling at 35 for three on a misbehaving wicket at the close on day four on Tuesday.
India is chasing 287 for victory to square the three-match series, but that looks a long way off on a wicket providing an extreme variable bounce.
Cheteshwar Pujara (11) and Parthiv Patel (five) will resume on the final day, trying to find a way to score runs against a fired-up home seam attack getting plenty of assistance from the pitch.
Kohli, who scored a brilliant 153 in the first innings, would have been key to India’s plans in the run chase, but he was trapped lbw for five by an excellent delivery from Ngidi that came back into him sharply and kept low.
Ngidi, 21, had earlier bagged the wicket of opener Lokesh Rahul for four with his first delivery of the day, a loosener the batsman carved straight to Keshav Maharaj at point.
Murali Vijay (nine) was the first batsman to fall, bowled by Kagiso Rabada from another ball that kept low.
India had worked their way back into the test by bowling South Africa out for 258 in their second innings.
Starting the day on 90 for two, AB de Villiers (80) and Dean Elgar (61) put on 141 for the third wicket, a potentially match-winning partnership.
But De Villiers was one of three wickets for the excellent Mohammed Shami (4-49) in the morning, followed by Elgar and Quinton de Kock (12).
Ishant Sharma (2-40) and Jasprit Bumrah (3-70) wrapped up the innings, despite a battling 48 from home captain Faf du Plessis.
The International Cricket Council also announced on Tuesday that they had fined Kohli 25 percent of his match fee and handed him one demerit point for an incident the previous day.
He was sanctioned for repeatedly complaining to umpire Michael Gough about a damp ball after a rain delay and aggressively throwing the ball to the floor.