At the close of play, Gautam Gambhir and Harbhajan Singh were batting on 53 and 1, respectively.
After bowling out England for 413, who resumed the day at 178/2, India lost seven wickets in the last session of the day, finishing with a lead of 31 runs with three wickets in hand and two days of play left.
Earlier in the day, skipper Alistair Cook and comeback man Kevin Pietersen struck their respective 22nd hundreds to get England past India's first innings score of 327.
Cook struck 13 boundaries and a six to make a solid 122 while Pietersen batted with his usual fluidity to score a splendid 186 at a strike rate of 79.82. Pietersen's innings included 17 boundaries and one six.
At 382/5, England looked to extend the lead. However, the Indian spinners struck when needed and the visitors lost the last five wickets in a span of 31 runs.
The England lower order could not hold out against the Indian spin trio of Pragyan Ojha, Ravichandran Ashwin and Harbhajan Singh, who took all but one wickets.
Ojha took his fifth five-wicket haul of his career as he ended with figures of 5/143. Ashwin and Harbhajan ran through the tail-enders taking two wickets each.
Coming out to bat in their second innings, India looked to stave off the challenge of the English spinners on a turning track.
But Panesar struck for England as he picked up opener Virender Sehwag for 9, who is playing his 100th Test, with the score reading 30 for no loss. Thereon, India consistently kept losing wickets with none of the batsmen, apart from Gambhir and Ashwin, reaching double figures.
Cheteshwar Pujara (6), Sachin Tendulkar (8), Virat Kohli (7), Yuvraj (8), Dhoni (6) all perished without making an impact as the Indian batting order collapsed.
Gambhir tried to play the anchor's innings scoring his first Test half-century since January.
Panesar ended the day with 5/61, to add to his first innings tally of 5/129, while Swann had figures of 2/39.