Jonny Bairstow completed his third hundred in successive Tests before falling for 106 at Edgbaston on Sunday to leave England's series-decider against India intriguingly poised.
Bairstow's latest century was the cornerstone of England's 284 in reply to India's 416, a deficit of 132 runs.
An on-field altercation with India's Virat Kohli appeared to fire up Bairstow who registered his fourth consecutive Test century.
No other England batsman made more than Sam Billings' 36, with the wicketkeeper one of four wickets for Mohammed Siraj. But with England having chased down seemingly stiff targets of 277, 299 and 296 during a recent 3-0 whitewash of Test world champions New Zealand, there was still work for India to do with the bat.
Jonny Bairstow celebrates after reaching his century during the third day of 5th Test. Reuters
They lost Shubman Gill to just the third ball of their second innings, caught in the slips off England great James Anderson. But Cheteshwar Pujara (17 not out) and Hanuma Vihari (10 not out) took India to 37-1 at tea on the third day, a lead of 169 runs.
England had resumed in the dire position of 84-5 in a match they have to win to square this five-match series at 2-2.
Against New Zealand, their first series under their new leadership duo of Stokes and red-ball coach Brendon McCullum, the team had several times hit its way out of trouble.
But for all the talk of the new 'Bazball' approach, a reference to former New Zealand captain McCullum's nickname, Bairstow still played himself in against India's impressive pace attack.
Bairstow was 16 not out off 65 balls before, playing orthodox but powerfully hit strokes, he accelerated in scoring his next 84 runs off just 54 balls as the 32-year-old went to his fifth Test century of 2022.
Jonny Bairstow celebrates reaching his century. Reuters
He brought up his latest hundred when a push off seamer Shardul Thakur was misfielded on the cover rope to give the Yorkshireman his 14th four in 119 balls. He also hit two sixes.
This century followed Bairstow's scores against New Zealand of 136 at Trent Bridge and 162 at his Headingley home ground, where he also made an unbeaten 71 in the second innings.
But he fell to the first ball of Mohammed Shami's new spell when an edged drive flew to former India captain Virat Kohli at first slip. Kohli, who earlier Sunday had been spoken to by the umpires following a verbal altercation with Bairstow, blew a kiss to the crowd.
It was no more than Shami, who bowled far better than figures of 2-78 in 22 overs, deserved.
All-rounder Stokes, nought not out overnight, batted in frantic fashion for 25.