Chasing 378 for victory, England got off to a flying start before the loss of three quick wickets forced them on to the back foot.
Root, batting on 76, combined with Bairstow in a 150-run stand for the unbroken fourth wicket to put England's chase back on track.
England were 259-3 at stumps needing 119 for a series-levelling victory on Tuesday.
Bairstow, dropped on 14 in the slip, followed his first-innings century with a belligerent 72 not out.
England's highest successful run chase came in 2019 when they reached a 359-run target in an Ashes test against Australia on the back of Stokes's brilliant unbeaten century.
They reached the 100-mark inside 20 overs with Lees racing to a 44-ball fifty before Jasprit Bumrah intervened.
Minutes before the tea break, Crawley decided to leave a Bumrah delivery which jagged back to hit the top of his off-stump.
The seamer struck again with the first delivery after the break when he had Ollie Pope caught behind for duck.
From 107 for no loss, England slumped to 109-3 when Lees was run out in the next over.
India wasted two reviews trying to get Root lbw and Bairstow got a life early in his innings when Hanuma Vihari spilled an edge in the slip.
Rishabh Pant followed his first-innings 146 with 57, and opener Cheteshwar Pujara contributed 66 for India.
Crawley spilled a difficult catch at slip but Pant, then on 45, could not capitalise on the reprieve.
The left-hander perished attempting a reverse-sweep against left-arm spinner Jack Leach and Root took a sharp catch at slip.
England subjected India's lower order to a bouncer barrage on a pitch with variable bounce and Shardul Thakur suffered painful knocks on the helmet by successive short deliveries by Matthew Potts.
The tourists are 2-1 up in the series which could not be completed last year following COVID-19 cases in the India camp ahead of the final match at Old Trafford.