Dale Steyn ended a bowling drought with a six-wicket haul as South Africa fought back on the second day of the second and final Test against India at Kingsmead on Friday.
Steyn took six for 100 as India slipped from their overnight 181 for one to 334 all out.
South Africa reached 82 for no wicket by the close.
Steyn had Cheteshwar Pujara caught behind by wicketkeeper AB de Villiers in the sixth over of the day which started more than three hours late because of rain.
Murali Vijay followed in Steyn's next over when he gloved a catch down the leg side. Rohit Sharma shouldered arms and was bowled off the next delivery. Kohli and Rahane then batted solidly and saw off the second new ball, before Kohli departed when he glanced Morne Morkel down the leg side to de Villiers to take a spectacular catch. Rahane and Dhoni scored quickly after tea but Dhoni soon edged Steyn to slip, and Zaheer Khan slashed wildly at a lifting delivery from Steyn and was caught by a leaping De Villiers.
Ravindra Jadeja edged off-spinner JP Duminy to slip for Jacques Kallis to become the second man to take 200 Test catches. The innings folded quickly as Ishant Sharma was caught behind off Steyn and Mohammed Shami edged Morkel to first slip.