Arriving at the crease with England 131-5, Woakes — back in the side as a replacement for Ben Stokes — scored freely in a partnership of 189 with Bairstow, bringing up his century with a pull for three.
Bairstow looked set to join him in getting his name on the Lords’ honours board, but the Yorkshireman fell for 93, caught excellently by wicketkeeper Dinesh Karthik after he nicked a Hardik Pandya delivery.
Woakes, who ended the day unbeaten on 120, struck 18 boundaries at the home of cricket and was joined at the crease by effervescent youngster Sam Curran (22 not out) who again looked confident after impressing with both bat and ball in the opening test at Edgbaston.
After rain washed out the first day’s play and interrupted much of day two, bad light brought proceedings to a close with England in a commanding lead.
Earlier England had stumbled to 89-4 in reply to India’s first-innings 107, with the hosts’ top order again failing to impress.
In the eighth over, Keaton Jennings missed a straight delivery by Mohammed Shami and was trapped lbw for 11.
In the following over, Alastair Cook (21) was caught behind after he nicked a swinging delivery from Ishant Sharma which brought 20-year-old debutant Ollie Pope to the crease.
The right-hander played some positive strokes and scored quickly as he looked to rebuild alongside captain Joe Root, but as lunch approached he was trapped lbw by Pandya.
Root was watchful for much of his innings until his dismissal by Shami lbw for 19 from 53 balls signalled the break.
Jos Buttler was the one wicket to fall in an afternoon session dominated by the hosts, trapped lbw for a breezy 24 by the impressive Shami who claimed three wickets.
Thereafter Bairstow and Woakes dominated a dejected India attack with England scoring at almost four-and-a-half an over in a positive batting display.
England lead the five-match series 1-0.
Reporting by Tom Hayward, editing by Ed Osmond and Pritha Sarkar