Johannesburg - The Indian pace attack claimed five wickets for 16 runs during the final session of the second day to reduce South Africa to 213 for six, at the close of play at the Wanderers on Thursday.
Ishant Sharma was chief destroyer for India, returning figures of 3/64, as South Africa trailed by 67 at close following India's first innings of 280.
Launching a fightback, Faf du Plessis (17 not out) and Vernon Philander (48 not out) shared in a seventh-wicket stand of 67 runs unbroken at stumps.
Du Plessis, however, was dropped by Rohit Sharma in the slips off the bowling of Mohammed Shami minutes before the close of play with his score on 17.
On a day where 11 wickets fell, the Proteas were coasting along at 130/1 with a well-set Graeme Smith (68) and Hashim Amla (36) in the middle, before a middle-order collapse.
Amla left an Ishant Sharma delivery outside off, but was bowled after the ball jagged back to crash into the stumps to end a 93-run stand for the second wicket.
Jacques Kallis was beaten by Ishant Sharma and trapped lbw for a first ball duck.
Next to depart was Smith, who fell to his nemesis Zaheer Khan in the next over. Smith played all around a full ball from the left-arm quick bowler and was out lbw for 68 as South Africa were reduced to 130/4.
It also ended the chance for Smith to score his first ever Test century against India.
A brief period of hope was cut short as South Africa lost their fifth wicket with the score on 145.
New batsmen JP Duminy was drawn into a stroke by Shami and edged to Murali Vijay who took the catch at first slip.
Two balls later, AB de Villiers played all around a straight delivery and was out lbw for 13 to Shami.
In the post-lunch session, Alviro Petersen (21) was first to depart with the score on 37.
The Proteas opener was trapped in the crease by Ishant Sharma and was given out lbw as India struck in the 14th over.
Earlier in the day, India's last five wickets fell for 25 runs as they were reduced from 255/5 overnight to 280 all out in the first session.
Morne Morkel made the first breakthrough to dismiss MS Dhoni (19), edging through to wicketkeeper De Villiers.
Ajinkya Rahane joined his captain in the changeroom four balls later and three runs short of his half-century. This time Philander produced a moving delivery outside off and Rahane nicked a pearler through to De Villiers.
Khan made a first-ball duck, trapped lbw to Philander, and India added 16 more runs before Philander clean-bowled Sharma.
Morkel wrapped it up to get rid of Mohammed Shami who failed to score.
After picking up three wickets in the morning, Philander finished with overall figures of 4/61 while Morkel returned 3/34.