Chasing a formidable victory target of 310 to stay alive in the series, the visitors had slumped to 58 for four, losing two second innings wickets this morning, before they fought back.
At the break, the Proteas needed 205 more runs to win with six wickets in hand to level the series 1-1.
Skipper Hashim Amla (28 off 93 balls) and Faf du Plessis (22 in 66 balls) are holding fort for the side.
Ashwin was the lone Indian bowler to taste success in the morning by accounting for the two wickets to fall -- Dean Elgar (18) and de Villiers (9).
More From This Section
The tall bowler's first spell of the day was an impressive 5-0-15-2 for an overall innings figures of 3 for 35.
In fact even Amla and du Plessis could have been back in the pavillion had it not been the 'lives' they got because of the home fielders.
South Africa had commenced the day at 32 for 2, needing 278 more runs on the difficult spin-aiding pitch with opener Dean Elgar and skipper Amla at the crease.
(REOPENS DEL 15)
But Ashwin was setting him up nicely as the next ball turned away from the left-handed batsman and off the third, the Indian had his man -- caught bat-pad at silly point by Cheteshwar Pujara when defending.
The batsman stood for a while at the crease not sure about the umpire's decision before walking off dejectedly to make it 40 for 3.
De Villiers thought the best way was to attack the bowling and he stepped out as soon as he arrived to loft Jadeja for a boundary.
The next over from Ashwin produced a lot of drama as de Villiers was lured out of the crease but escaped a stumping chance by blocking the ball with his pad like a hockey goalkeeper before regaining the crease.
But Ashwin set him up with tossed up off-breaks to beat the batsman before deceiving him with a carom ball that straightened after pitching to catch de Villiers right in front of off stump.
Ashwin, by then, had grabbed the two wickets in 18 balls to add to the wicket of opener van Zyl he claimed last evening.