The good work of Rahul and Dhawan was taken forward by Indian skipper Virat Kohli and his deputy Ajinkya Rahane.
Hardik Pandya caused the damage with five wickets in just 29 balls, and India reached the close having lost just two wickets with a lead of 292.
After Virat Kohli and Ajinkya Rahane's match changing 159-run partnership on the previous day, England wasted no time as they bowled out the visitors for 329 early on Day 2.
KL Rahul (36) and Shikhar Dhawan (44) were the only two Indian wickets to fall in the second innings.
Shami and Bumrah then shared the new ball, with Ishant surprisingly held back.
Dhawan, on the other end, was a bit more watchful as the duo brought up the 50 in the ninth over.
Rahul was in the thick of things again a little later as Shami snared Ben Stokes, who prodded at the ball.
But Pandya's lethal five-over opening spell made the difference as he sent the English line-up reeling in a space of 28 balls.
Alastair Cook and Keaton Jennings took advantage of some wayward bowling to make an assured start in England's reply, taking the score to 46-0 by lunch. The square of the wicket shots, the cover drives were there to see, Both Kohli and Rahane showed enough patience waiting for the loose deliveries, leaving a lot of deliveries outside the off-stump.
On the very first ball of the next over, Bumrah removed Jennings caught behind as well.
From that moment, England were always fighting a rearguard action, with Ollie Pope edging down the leg side before Pandya had captain Joe Root caught by Rahul's fingertips at slip.
# Ravichandran Ashwin is in at number eight.
Pandya made sure that the off-spinner wasn't required at all in the first innings.
He caught Chris Woakes by surprise, much like the all-rounder had to get Cheteshwar Pujara in the first innings. His next three wickets came in the space of three balls across the 31st and 33rd over, during which he was on a hat-trick as well.
Debutant Rishabh Pant, who became the first Indian to score his first Test runs with a six on day one, was the first casualty as he was bowled by Stuart Broad. He added 33 runs for the last wicket with Anderson before holing out off Bumrah in the deep.
It gave India a massive 168-run lead going into their second innings, and plenty of time to put themselves on the road to victory.