Image courtesy of: ESPNcricinfo
South Africa opener Dean Elgar and wicketkeeper-batsman Quinton de Kock fought hard with their knocks of 160 and 111, but Ravichandran Ashwin kept India on top with his five-for.
Starting off the day on 39/3, South Africa lost Temba Bavuma early on as he was trapped lbw off the bowling of Ishant Sharma for 18.
Elgar and captain Faf du Plessis stabilised the innings with a 115-run partnership before Du Plessis was caught by Cheteshwar Pujara at leg slip off the bowling of Ashwin for 55, which came off 103 balls and included eight boundaries and a six.
Elgar and De Kock kept the runs flowing with a 164-run stand before Elgar was dismissed by Ravindra Jadeja for 160, which came off 287 balls and included 18 boundaries and four sixes.
De Kock went on to score 111, which came off 163 deliveries and included 16 boundaries and two sixes, before he was clean bowled by Ashwin, who also took out Vernon Philander shortly after.
Debutant Senuran Muthusamy and Keshav Maharaj managed to muster an unbeaten nine-run partnership before stumps was called.
Muthusamy finished on 12, which came off 60 balls and included a boundary, while Maharaj remained undefeated on three.
Ashwin was the pick of the bowlers with five wickets, while Jadeja snapped up two and Ishant claimed one.
South Africa ended day three on 385/8, which still leaves them trailing by 117 runs, and will continue batting on Saturday at 09:20 local time or 03:50 GMT.