South Africa found themselves in a strong position after Faf du Plessis led his team to a lead of 286 runs in the second innings.
Starting the day at 90/2, De Villiers continued his good form to score 80 runs, when a sharp, short in dipper from Mohd Shami took his edge and Parthiv took an easy catch to send him to pavilion. This ended a 141 run partnership between De Villiers and Elgar. Elgar followed suit for 61, as Rahul caught him at the boundary off Shami.
Shami was on a roll, when he got Quinton de Kock, who was looking dangerous, yet fidgety, for 12. Faf du Plessis remained at the crease, adding valuable runs with tailenders. Philander hit 26 and added 46 runs with Philander. But Ishant Sharma and R Ashwin ended the tailenders; with Bumrah dismissing Du Plessis caught and bowled for 48 runs.
South Africa was bundled out for 258, with a lead of 286 runs. Mohammed Shami took 4/49, while Bumrah took 3/70 for India.
India required 287 runs to win the Test and get equal in the series. But Lungi Ngidi and Kagiso Rabada had other plans with the ball. Vijay was bowled when a ball kept low, took the edge of his bat and bowled him for 9. Ngidi then got into the act removing Rahul for 4, who was caught by Maharaj at backward point.
But the biggest blow to India came, when Ngidi caught Virat Kohli plum in front of the wickets, which was reviewed by the batsman. Only thing that could have saved him was an edge, but the DRS showed nothing on the ultra edge and Kohli was back on his way to pavilion for 5 runs. India was left 26/3 after losing the first innings centurion.
Parthiv Patel came out in front of Rohit Sharma and Hardik Pandya and copped a blow to his ribs. But he and Pujara stayed on the wickets until the end of the day.
The match is poised wonderfully, with South Africa requiring 7 wickets to win the match and India needing 252 runs to win on the last day, with Rohit Sharma, Hardik Pandya and R Ashwin to come.
SOUTH AFRICA 335 & 258 (AB de VILLIERS 80, D ELGAR 61; M Shami 4/49)
INDIA 307 AND 35/3 (C PUJARA 11*; L NGIDI 2/14)
India require another 252 runs with 7 wickets remaining