It took only two overs after lunch for India to wrap a memorable win. Marco Jansen began the second session by taking two boundaries off Mohammed Shami. But on the fifth ball, Shami had the last laugh as he drew Jansen to defend on the front foot but nicked behind to keeper Rishabh Pant.
Ravichandran Ashwin took the first wicket by a spinner in the match, offering Kagiso Rabada flight outside the off-stump. Rabada reached out for a drive but the outer edge flew to Shami at backward point. On the very next ball, Ashwin sealed India's win in just 10 minutes of the second session as Lungi Ngidi inner-edged to Cheteshwar Pujara at backward short leg.
Earlier, resuming from 94/4 under a clear bright sky, Bavuma and Dean Elgar struck crisply-timed boundaries to keep India frustrated. Shami dropped Elgar on 63 in a straightforward chance off his own bowling, further extending the wait of a breakthrough for the to'rists'.
Shami's dropped chance cost India only 14 runs as the 36-run partnership was brought to an end by Jasprit Bumrah trapping Elgar plumb lbw. The left-handed batter shuffled in an attempt to flick but missed the in-ducker from Bumrah which crashed to his pads. He went for the review, but replays showed the ball hitting the stumps.
Quinton de Kock smashed some boundaries while sharing a stand of 31 with Bavuma before chopping on to his stumps while trying to cut off Siraj. Shami struck in his second spell of the session, getting a length ball to straighten after pitching and take a faint outer edge of Wiaan Mulder's bat to Pant.
Bavuma lost partners but continued to hit boundaries. Along with Jansen, Bavuma ensured that South Africa didn't lose any more wickets before lunch. But on resumption after the break, it took just 12 deliveries for India to breach another fortress after Gabba in the beginning of the year despite a day washed out due to rain.
Brief scores: India 327 and 174 beat South Africa 197 and 191 all out in 68 overs (Dean Elgar 77, Temba Bavuma 35 not out, Jasprit Bumrah 3/50, Mohammed Shami 3/63) by 113 runs.