Six wickets from Dale Steyn ripped through India as South Africa bowled the tourists out for 334 on the second day of the second Test at Kingsmead on Friday.
Steyn took three wickets in ten balls at the start of a rain-affected day and another three in eight deliveries after tea to peg India back from their strong overnight position of 181-1.
The fast bowler began by finding the outside edge of Cheteshwar Pujara's bat to remove him for 70 and also had Murali Vijay for 97 and Rohit Sharma for a first-ball duck early on.
Ajinkya Rahane resisted and was 51 not out for his first Test half-century, but Steyn returned to dismiss another three India batsmen, before Morne Morkel rounded off India's innings to return 3-50.
South Africa raced to 82 without loss in their reply, with openers Graeme Smith (35 not out) and Alviro Petersen (46 not out) to resume on Saturday as the Proteas aim to build a big lead.
India were in a dominant position overnight on what appeared to be a good batting pitch in Durban and were 198-1 before Steyn's first attack with the old ball sent Pujara, Vijay and Sharma packing in rapid succession as India slumped to 199-4.
India had two solid partnerships around the impressive Rahane, playing his third Test, when he combined for 66 with Virat Kohli (46) to recover from Steyn's initial onslaught.
Rahane also shared an attacking 55-run stand with captain Mahendra Singh Dhoni (24), before Dhoni's edge off Steyn to Smith at first slip began India's second and final collapse. They lost their last five wickets for 14 runs.
Spinner JP Duminy's solitary wicket, removing Ravindra Jadeja for a duck, also produced a milestone for retiring all-rounder Jacques Kallis, who went low to his left at slip to scoop his 200th Test catch in his final match. Only former India batsman Rahul Dravid has taken more catches in Tests.
Wicketkeeper AB de Villiers also claimed five catches in the innings, including a standout high jumping one-handed take off a thick edge from Zaheer Khan's shot off Steyn, as South Africa forced their way back into the series-deciding match. The first Test was drawn.