The Proteas slipped from a commanding 130 for one to 146 for six in reply to India's total of 280 before an unbeaten partnership of 67 between Vernon Philander (48 not out) and Faf du Plessis (17 not out) steadied the innings.
They remain 67 runs behind India's first innings total on a Wanderers wicket that usually quickens on the second and third days, as was the case in the afternoon session when the tourists tore through the home side's top order.
Ishant Sharma (three for 64) and Mohammed Shami (two for 48) were the chief destroyers in a brilliant spell of fast bowling after tea.
The day should have been better for India as well after Rohit Sharma dropped a simple chance off Du Plessis at second slip off the bowling of Shami with 10 minutes of play remaining.
India lost their last five wickets for 16 runs in the morning session and South Africa suffered the same fate in the afternoon. But while it was the Indian tail that were skittled, for the Proteas it was the wickets of Hashim Amla, Jacques Kallis, Graeme Smith, JP Duminy and AB de Villiers.
Amla (36) was the first to go then Kallis fell for a first-ball duck, Sharma trapping him lbw. Smith batted doggedly for 68 but became India's third wicket in nine balls when Khan trapped him leg before.
Ten minutes earlier South Africa had looked comfortable at the crease but suddenly the Indian quicks appeared unplayable. Duminy scratched around for his two runs before edging Shami to Murali Vijay. Two balls later the tourists had the prized wicket of De Villiers (13), beaten for pace and given lbw.
South Africa had run through India's tail in the morning session with some excellent seam bowling.
The tourists resumed on 255 for five, but Philander (four for 61) and Morne Morkel (three for 34) restricted them to 280 all out, a total that now looks like a good one.