India, who had taken a slender 17-run first innings lead, added 60 runs in the morning session while losing six wickets after they resumed the day at 125 for two. They now have an overall lead of 202 runs.
In fact, India lost six wickets for the addition of just 24 runs as they were 161 for two when captain Virat Kohli (29) fell just after the drinks break.
India lost their overnight batsmen after the first hour play as Hashim Amla's rotation of bowlers worked for the visitors. Cheteshwar Pujara (77) and Kohli started off well to stitch a 66-run third-wicket partnership and get through till the first drinks break, but soon spinners Imran Tahir (3/39) and Simon Harmer(3/56) were pressed into action and the collapse began.
The Proteas struck in the first over after the drinks break with part-time bowler Stiaan van Zyl, who was introduced in the 10th over of the day, getting Kohli caught behind. The military-medium of Zyl proved deceptive as Kohli pushed at a widish good-length delivery and wicketkeeper Dane Vilas took a wobbling catch.
The Saurashtra batsman tried to defend a tossed up delivery from Tahir without moving his feet as the ball took an outside edge to fall into the hands of first slip and Amla made no mistake.