Shoaib Bashir claimed a maiden five-wicket haul in any form of professional cricket, but England were met with resistance in Ranchi.
India turned an overnight 219 for seven into 307 all out on the third morning of the fourth Test, largely thanks to Dhruv Jurel moving from 30 to 90 before he was last man out on the stroke of lunch.
Tom Hartley spun one past a defensive push to leave India trailing by 46 after Bashir bagged the one wicket he needed for a first five-for in just his eighth first-class appearance and second Test.
Bashir, who finished with five for 119, might have had the milestone sooner, but Ollie Robinson spilled Jurel when he was on 59.
It was a difficult morning for Robinson as he was again down on pace, while the seamer sent down a further three no-balls, taking his tally to six on his first competitive appearance since last summer, with an extended absence perhaps contributing to a lack of rhythm.
It was left to James Anderson to make the breakthrough for Test wicket 698, although there was an element of fortune as Kuldeep Yadav defended on to his front foot and the ball rolled back on to off-stump.
Kuldeep leaned on his bat then began a slow trudge off, clearly distraught at his downfall for 28, having soaked up 131 deliveries, following in a handy 76-run stand alongside Jurel.
India did not fall apart at the back end as England had done 24 hours earlier as he shared a princely 40 with Akash Deep.
Jurel scored 31 of them, hammering Bashir for two meaty sixes after Robinson spilled a chance above his head, with the ball bursting through his hands.
Deep briefly got into the act but then got in a tangle against Bashir, rapped on the back pad and given lbw, with England getting their fourth umpire’s call of the innings.
Hartley ended Jurel’s counter-attack in the final over before lunch but it was India’s session with their last three wickets adding 130 to make sure they did not face a significant first-innings deficit.