Stuart Broad was rewarded for some consistent bowling upfront to get rid of KL Rahul four overs in to play on Day 2.
Cheteshwar Pujara took his time to get going, but with Kohli at the other end, got a move on himself.
Virat Kohli reached the milestone of 6000 Test runs - the second-fastest Indian to do so after Sunil Gavaskar.
Stuart Broad pitching it up forced Dhawan to play to an outswinger, only to feather an outside edge to Buttler.
Moeen Ali caused havoc in the second session, running through India's middle and lower-middle order. He ended up with five wickets.
Amidst the carnage at the other end, Pujara, who was dropped on 50, went on to bring up his century, adding vital runs with the tail of Ishant and Bumrah od 32 and 46 runs respectively before India were bowled out for 273.
Cook and Jennings saw the four overs through unscathed to end at 6/0 trailing by 21 at Stumps.