Jasprit Bumrah struck twice late in the day as India inch closer towards a win at the end of Day 4 of the first test at Centurion on Wednesday.
Resuming at a overnight score of 16/1, India lost nightwatchman Shardul Thakur for 10 as he edged a Kagiso Rabada delivery to Wiaan Mulder at third slip.
KL Rahul hung around for a while before he slashed at a Lungi Ngidi delivery outside off to Elgar at slip for 23. Cheteshwar Pujara and skipper Virat Kohli added 25 runs for the fourth wicket before the latter departed first ball after lunch playing a loose drive outside off against Marco Jansen for 18.
Pujara along with Ajinkya Rahane put on 30 runs for the fifth wicket before the former was caught down the leg-side by Quinton De Kock off Lungi Ngidi.
Rahane holed out to deep square leg while trying to hook Jansen for a 23 ball-20. Rishabh Pant and Ravi Ashwin put on 35 crucial runs for the seventh wicket before the latter was caught at gully by Peterson off Rabada for 14.
Pant’s run a ball knock of 34 came to an end when he lobbed a Rabada short delivery to wide mid on.
Mohammed Shami (1) and Siraj (0) fell soon as India were bowled out for 174, with an overall lead of 304.
For the hosts, Kagiso Rabada and Marco Jansen bagged four wickets each.
Chasing 305, South Africa started disastrously by losing Aiden Markram bowled by Shami early in the second over.
Dean Elgar and Keegan Petersen put on 33 runs for the second wicket before the latter edged a Mohammed Siraj delivery behind the stumps for 17.
Elgar and Van der Dussen featured in a 40 run stand for the third wicket before the latter shouldered his arms to an in swinger and was bowled by Jasprit Bumrah for 11.
Bumrah dismissed night watchman Keshav Maharaj (20) bowled by a stunning yorker on the final delivery of the day, as the hosts finished at 94/4, still needing 211 runs to win.
Elgar remained unbeaten on 52.