Centurion: Ishant Sharma's double strike helped India bowl out South Africa for 335 just before lunch on day two of the second Test here.
Out to play one before the break, India made four runs with Murali Vijay putting a loosener from spinner Keshav Maharaj past the extra cover.
R Ashwin finished with 4-113 and Ishant Sharma took 3-46 as the Proteas lost their last seven wickets for 89 runs.
At the break, Vijay was batting on four while KL Rahul was yet to face a ball. The hosts, surprisingly, opened the bowling with Maharaj.
Starting from overnight 269/6, Faf du Plessis (63) and Maharaj (18) took their 7th wicket stand to 31 runs. India wasted their last DRS review early in the day as Jasprit Bumrah (0-60) looked for an early LBW call against Maharaj.
Mohammed Shami (1-58) bowled a lively spell and got the breakthrough with Maharaj caught behind in the 99th over for his 100th wicket in 29th Test.
India made a double howler in the 104th over. First, Kagiso Rabada (on 1) was dropped at slip off Ashwin by Virat Kohli. The very next ball, Rabada (on 3) was again dropped by Hardik Pandya at point as Shami obstructed him whilst running in from short third-man.
South Africa then crossed 300 in the 106th over, while du Plessis reached his 17th Test half-century off 127 balls. In doing so, he put on 42 runs with Rabada (11).
India finally got the delayed breakthrough in the 111th over as Pandya held a smart catch off Ishant in the deep. Two overs later, Ishant also bowled du Plessis to change the course of the morning session again.
Ashwin then wrapped up the South African innings as Morne Morkel (6) holed out to long off. Lungi Ngidi, on debut, remained unbeaten on 1.
On day one, South Africa won the toss and chose to bat with the pitch surprising everyone with its flat nature. Aiden Markram scored 94 and Hashim Amla made 82.
South Africa won the first Test in Cape Town by 72 runs and lead the three-Test series 1-0.