Dale Steyn plundered three wickets in two overs to drag South Africa back into the second Test in Durban, and deny Murali Vijay a first century outside India.
A fired-up Steyn ended his wicketless streak of 68 overs with a brutal afternoon-session spell of three for 38 from nine overs.
A heavy downpour washed out the morning session on the second day in Kingsmead.
After that delay the complexion of the match changed quickly: India closed on 181 for one overnight, but by tea on day two found themselves 271 for five.
The rainclouds cleared to reveal blue sky as play finally started after lunch, and immediately Steyn found his rhythm.
After resuming on 58, Cheteshwar Pujara edged Steyn between first and second slip, and that wound up the 30-year-old Proteas quick.
The very next over Steyn dismissed Pujara caught behind for 70, with India 198 for two.
Vijay had started the second day at 91, intent on moving past that century mark without issue.
But where the flat pitch frustrated the South Africa attack on day one, Steyn was able to make the modicum of reverse swing pay dividend.
It was aggressive pace bowling that accounted for Vijay, though, pinning him back in his crease with a rising delivery.
Vijay could only fend down the leg side, with AB de Villiers taking the catch, and departed for 97 with India suddenly 199 for three.
Rohit Sharma arrived with the sole objective to steady proceedings, only to throw his wicket away first ball with a nasty misjudgement.
After an awful leave, Sharma could only watch on aghast as a reversing delivery from Steyn uprooted his middle stump.
From 181 for one overnight, suddenly India were 199 for four.
Virat Kohli at least denied Steyn a hat-trick, at the start of the South Africa paceman's next over, turning a leg glance away for four.
Kohli and Ajinkya Rahane were able to settle India once more, racking up a 50 partnership.
But Steyn twice hit Rahane, once on the helmet, and India were unable to hold out until tea.
Morne Morkel claimed his second wicket of the match by forcing Kohli (46) into a leg-side edge that De Villiers collected easily.