Bhuvneshwar (58) and Shami (51 not out) turned out to the unlikely batting heroes for India as they pulled the team out of trouble with a defined 111-run partnership to frustrate the hosts, who had the visitors reeling at 346 for nine at one stage with fours wickets falling for just two runs in a span of 20 balls.
At stumps, England were 43 for one with Shami (1/15) removing an out-of-form rival skipper Alastair Cook for five. The hosts still trail India by 414 runs with three full days play left in the match.
Sam Robson (20 not out off 48 balls, 2 fours) and Gary Ballance (15 not out off 46 balls, 1 four) were at the crease when stumps were drawn. The duo added 34 unbeaten runs for the second wicket.
But the day belonged to India`s tailenders — Bhuvneshwar and Shami — who struck their maiden Test fifties respectively en route to their century partnership, which incidentally is India`s second highest stand for the last wicket.
Earlier, opener Murali Vijay struck a fine 146-run knock while skipper Mahendra Singh Dhoni made 82 to take India forward.
India captain Dhoni deployed all his five primary bowlers – Bhuvneshwar (0/12), Shami, Ishant Sharma (0/12), Ravindra Jadeja (0/3) and Stuart Binny (0/1) -? in short bursts in the 17 overs they managed in the day.
Earlier, Bhuvneshwar reached his maiden Test fifty immediately after tea in 133 balls, in the 157th over of the innings.
Shami was not to be left behind as he smashed James Anderson for a six over the long-off boundary in the last ball of the same over to bring up his own maiden Test fifty off 73 balls.
With his pacers tiring out and devoid of any ideas, Cook brought back Moeen into the attack in the 161st over and the move worked as Bhuvneshwar was holed out to Joe Root as mid-on while going for a big shot to drew curtains to the stunning last-wicket partnership.
Bhuvneshwar scored his runs off 149 balls with the help of five fours, while Shami remained unbeaten on 51 off 81 balls during which he hit six boundaries and one six.
England`s bowling figures didn`t make for a happy reading. Anderson (3/123) was their best bowler, while Stuart Broad (2/53) and Ben Stokes (2/81) bowled their hearts out. Liam Plunkett (1/88) and Ali (1/97) were the other wicket-takers while Joe Root (0/6) bowled just the one over in the innings.
The only time England enjoyed some dominance in the day was in the post-lunch session when they rocked the Indian middle-order by picking four quick wickets.
The session began with Dhoni batting on 81 and Ravindra Jadeja on 24 with India eyeing to cross the 400-run mark.
But India suffered a jolt immediately after lunch as Jadeja was caught behind, trying to cut Stokes away. He scored 25 runs off 24 balls with the help of two fours and as many sixes.
Two overs later, England struck twice as Dhoni set off for a suicidal run and threw away his wicket and a possible century. The Indian captain could only add one more run to his score and was found short of his crease by Anderson`s direct throw from mid-off. He scored 82 runs after facing 152 balls, which included seven fours.
Three balls later, debutant Stuart Binny (1) was dismissed by Stokes as India lost three wickets in just 14 balls for the addition of one run.
If that was not enough, Broad then cleaned up Ishant Sharma (1) as India slumped to slumping 346 for nine from from 344 for six in the blink of an eye.
But then came in Bhuvneshwar and Shami and showed great resilience to keep India in the hunt for 400-plus score.
They frustrated the English bowlers for an hour until tea, bringing up their 50-run partnership in the 140th over of the innings.
In the morning session, thanks to Vijay’s 146 and Dhoni, India were placed comfortably at 342 for five in 118 overs) at lunch.
Along with Dhoni, Vijay survived a testing morning spell from Broad and Anderson. They were aided by English wicket-keeper Matt Prior who dropping a simple catch off Dhoni in only the third over of the day.
The duo persisted and brought up their 100-run partnership in the 11th over of the day and the 101st of the innings. Vijay then slowly progressed towards his 150-run mark but when he was just one scoring shot away, he was trapped LBW by Anderson in his second spell of the morning.
TV replays, however, suggested that the ball might have travelled over the stumps, but the umpire thought otherwise. He faced 361 balls during his superb innings and batted for nearly eight hours, hitting 25 fours and one six.