Lungi Ngidi and Kagiso Rabada bowled exceptionally upfront as SA claimed seven Indian wickets with 55 balls and in just over an hour on Tuesday morning.
India started day three of this Boxing Day Test at SuperSport Park on 272/3 but Ngidi, Rabada and debutant Marco Jansen ripped through their middle and lower order to bowl the visitors out for 327.
Ngidi was the pick of the Proteas bowlers with 6/71. He was followed by Rabada on 3/72 while there was a significant milestone for Jansen who claimed his maiden Test scalp with the wicket of Jasprit Bumrah.
SA were on 21/1 when lunch arrived, with Keegan Petersen on 11 and Aiden Markram on 9 after the early dismissal on 1 run of captain Dean Elgar, who was caught by Rishbh Pant from the bowling of Jasprit Bumrah in the first over.
Earlier, SA got the breakthrough after four overs when KL Rahul (123), who added only one run to his overnight score, was caught behind by Quinton de Kock from the bowling of Rabada.