Mohammed Shami took three wickets in four overs as India fought back on the fourth day of the second Test against South Africa at SuperSport Park on Tuesday.

The match seemed to be slipping away from India as Dean Elgar and AB de Villiers scored freely in the first hour, adding 54 runs in 12.1 overs before Shami had De Villiers caught behind in the last over before the morning drinks break.

De Villiers made 80 off 121 balls with ten fours before attempting to nudge a ball backward of square and being deceived by extra bounce.

He and Elgar had added 141 for the third wicket after coming together at three for two.

Elgar fell soon afterwards for 61 when he hooked Shami to deep square leg where Lokesh Rahul juggled the ball before completing a catch.

Quinton de Kock hit three boundaries, all off the edge of his bat, before edging Shami to wicketkeeper Parthiv Patel in the same over.