Graeme Smith (35*) and Alviro Petersen (46*) gave the hosts a solid start and remained unbeaten at the crease.
MS Dhoni used four bowlers but none of them were able to break the opening partnership who looked focused at finishing the day's play without any damage.
In the rain-shortened day, South African pounced back in the game on Friday with Steyn bowling a gutsy spell to pick up six wickets, including Murali Vijay (97), who missed his century by just three runs, and finishing the Indian innings at 334.
Resuming at 181 for 1, Indian middle order collapsed to make things difficult for the visitors. Steyn struck early and picked up the wicket of
Cheteshwar Pujara (70). Virat Kohli (46) and Ajinkya Rahane (51*) put up some resistance but the rest failed to deliver with their willows.
India lost the last five wickets by adding just 14 runs on the scoreboard.
Rohit Sharma (0), Zaheer Khan (0) and Ravindra Jadeja (0) did not trouble the scorers while skipper Dhoni contributed 24 runs before losing his wicket to Steyn.
Morne Morkel and JP Duminy took three and one wickets each.
The first Test of the two-Test series was drawn.
334 all out (M Vijay 97, D Steyn 6/100)
82/0 at stumps (G Smith 35*, A Petersen 46*)
--IBNS (Posted on 27-12-2013)