Rajkot: England took two late wickets after Murali Vijay and Cheteshwar Pujara made centuries for India on the third day of the first Test in Rajkot on Friday.
Vijay (126) was dropped on 66 and Pujara (124) successfully reviewed an lbw decision on 86 in a stand of 209.
After Pujara slashed Ben Stokes to slip, Vijay and Amit Mishra fell in the final two overs to give England the breakthroughs they deserved.
India closed on 319-4, 218 behind, with Virat Kohli unbeaten on 26.
The late wickets, to Adil Rashid and Zafar Ansari respectively, were just reward for an England side that stuck to their task on a surface that only began to offer greater assistance to the spinners at the end of the day.
Further success on the fourth morning could provide the tourists the opportunity to try to force a victory, though two more sessions of Indian batting would probably leave the hosts as the only team able to win.
England were buoyant when Stuart Broad, in his 100th Test, trapped Gautam Gambhir lbw with his first ball of the day.
The tourists, though, had to wait 67 overs for another breakthrough.
First Vijay failed to deal with a Rashid googly and popped an simple catch to Haseeb Hameed to short leg, then nightwatchman Mishra inside-edged left-armer Ansari to the same fielder.
Pujara hit 382 runs before being dismissed against England four years ago, then went 14 innings without passing 55.
Here, he recovered from being hit on the head three times in as many overs by Woakes to make his ninth Test century.
Scoring almost exclusively off the front foot, Pujara played drives on both sides of the wicket and the occasional tickle fine off the hips.
Given out lbw to Ansari, he was reprieved when a review suggested the ball was going over the top of the stumps.
Though he was made to wait on 99 during tea, Pujara celebrated reaching three figures in the first Test on his home ground, before slashing Stokes to captain Alastair Cook at a wide slip position.
Brief scores
England - 537 (Stokes 128, Root 124, Stokes 117)
India - 319 for 4 (Vijay 126, Pujara 124)
Status - India trial by 218 runs