Michael Vaughan was 16 not out and Kevin Pietersen had 15 as they survived an evening session that had been interrupted by the weather to give England an overall lead of 174 runs.
Left-arm seamer Zaheer Khan removed the England openers and had figures of two for 36. With two days remaining and with more rain likely, England will be seeking to set the tourists a target of at least 300.
India, replying to England's first innings 298, earlier collapsed to 201 all out before lunch after losing their last six wickets for 46 runs in the morning session. Swing bowler James Anderson claimed career best test figures of five for 42.
They resumed on 145 for four and seeking to get somewhere near to England's first innings total.
However, once former skipper Saurav Ganguly was bowled in the sixth over of the morning for 34 by an Anderson delivery that swung in to him the capitulation had commenced.
Ryan Sidebottom removed night-watchman Rudra Pratap Singh before Anderson had the dangerous Mahendra Singh Dhoni caught by Ian Bell in the gully for a duck. The score was then 175 for seven.
Anil Kumble batted for 24 minutes before Sidebottom trapped him lbw for 11 and the last remaining batsman, VVS Laxman, was unable to hold off England's charge and edged Sidebottom to wicketkeeper Matt Prior for 15.
With India nine wickets down, there was a shoot-out between Anderson and Sidebottom with a five-wicket haul on offer.
Anderson, 25 this month, won the contest when Zaheer Khan mishit a hook and was caught by Andrew Strauss at first slip. It was Anderson's third five-wicket test haul and first in four years.
England's second innings was progressing solidly at 40 without loss following the first of two lengthy rain delays when Strauss, on 18, failed to move his feet to a Zaheer ball outside off stump and edged to first slip.
Shortly before, Strauss had been involved in an exchange with India fast bowler Shanthakumaran Sreesanth that may have affected his concentration.
The batsman was struck on the thigh by Sreesanth who threw, supposedly at the stumps, after fielding off his own bowling. Sreesanth apologised, though Strauss's response was to walk away while Sreesanth neared his delivery stride next ball.
Zaheer removed Alastair Cook lbw for 17 two balls after his first wicket though replays suggested the ball may have struck him outside the line of off stump.
India have not won a test series in England for 21 years.