Rishabh Pant hit a defiant 101 to put India in control of the fourth and final Test against England on Friday.
India reached 294 for seven at the end of the second day in response to England's 205. The South Asians lead by 89 runs with Washington Sundar batting on 60, and Axar Patel on 11 at the end in Ahmedabad.
India, leading 2-1 in the series, had struggled to make runs and lost crucial wickets, including skipper Virat Kohli who failed to score.
But Pant put on 113 for the seventh wicket with Sundar to hit back after the England bowlers reduced India to 146 for six at one stage.
James Anderson claimed three wickets while fellow pace bowler Ben Stokes and spinner Jack Leach took two each.
Left-handed wicketkeeper batsman Pant made light of the tough conditions and reached his third Test hundred with a six off Joe Root's spin.
Pant, who smacked Anderson for his 13th boundary with an audacious reverse hit over slips, finally fell to the veteran quick and walked off to a standing ovation.
Sundar kept up the attack reaching his third Test 50.
Stokes earlier took two key wickets, including Kohli, and catching Ajinkya Rahane in the slips added to his key role after hitting 55 on day one.
He combined with Anderson, who bowled 11 maidens in 20 overs to make India work for their runs after they resumed the day on 24-1.
Spinner Jack Leach took the day's first wicket after trapping Cheteshwar Pujara lbw for 17 with the overnight batsman adding two to his score.
Stokes generated pace and bounce at the venue where England lost the previous match inside two days on a viciously turning pitch.
A day after his confrontation with Kohli, Stokes sent back the captain for his second duck of the series when he edged a rising delivery to wicketkeeper Ben Foakes.
Another Stokes delivery hit Rohit Sharma on the helmet and he took a sharp catch at second slip to dismiss Rahane for 27 off Anderson on the stroke of lunch.
The all-rounder denied Sharma his fifty when he trapped him lbw for 49.
India need to avoid defeat to book a meeting with New Zealand in the World Test Championship final at Lord's in June.
Want stories like this in your inbox?
Sign up to exclusive daily email
More Stories from Cricket