Rohit Sharma made his third century of the series and Ajinkya Rahane was also closing in on a hundred as India hit back after a poor start on day one of the third Test against South Africa in Ranchi.
Kagiso Rabada took two early wickets in a magnificent new-ball spell and India - who gave a debut to Shahbaz Nadeem - were 39-3 when Anrich Nortje removed Virat Kohli for 12.
That was as good as it got for a Proteas side that included five changes - with Heinrich Klaasen and George Linde handed Test bows - as an unbroken fourth-wicket stand of 185 between Rohit (117 not out) and Rahane (83no) put India in control.
Rohit punished the Proteas attack with a combination of exquisite timing and power in his new role at the top of the order and Rahane played with great fluency in a classy knock.
India were 224-3 when bad light brought play to a premature end as they bid to secure a 3-0 whitewash.
Rabada (2-54) roared in to raise South Africa's spirits after their hammering in Pune last week, the in-form Mayank Agarwal (10) edging the paceman to Dean Elgar at third slip off the final ball of the fifth over.
Cheteshwar Pujara soon followed without scoring when he was struck on the back pad and given leg before wicket, with Rabada then denied a third wicket as Rohit overturned an lbw decision.
Nortje claimed the huge scalp of Kohli, who made a Test-best 254 not out last week, by getting one to nip back in and strike the skipper bang in front.
Rohit and Rahane saw India through to 71-3 at lunch and played with great freedom as the runs flowed in the afternoon session, Rabada twice taken for 13 in an over.
The aggressive Rohit and Rahane attacked Dane Piedt and the opener reached three figures for the sixth time in the longest format by disdainfully dispatching the spinner for one of four sixes in his imperious knock.
Rahane also lofted Piedt down the ground for six, while Linde bowled with reasonable control, but the breakthrough was not forthcoming and only 58 overs had been bowled when stumps were drawn under dark clouds.