India 307 for 6 (Kohli 97, Rahane 81, Woakes 3-75) v England

India had their collective best day of the Test series despite the rare instance of Virat Kohli failing to convert a half-century and Ajinkya Rahane falling in the 80s. Asked to bat in the most even bat-ball contest of the series, India showed all-round improvement: the openers added 60, India rediscovered some of their back-foot batting, and then Kohli and Rahane put on India's highest partnership in the country since the 2002 tour, debutant Rishabh Pant got off to a bright start, and India ended up with a comfortable 307 on the board with four wickets in hand.

England were left debating the wisdom of two decisions: picking Adil Rashid over Sam Curran, and then deciding to bowl. There can be two reasons for the latter decision. Either England feel the only life in this pitch was to be had in the first session or they got ahead of themselves and expected India to roll over. The second seemed likelier given the second new ball zipped around towards the end of the day's play, but India had scored plenty by then. England's fielding continued to let them down, taking their drops count this series to 10.

That India were not going to roll over was evident from how well the openers had lifted their game. This was the third opening combination in three Tests, but KL Rahul and Shikhar Dhawan had done some work on their batting. It helped them that England bowled shorter than they did in the first two Tests, which meant the ones that moved actually beat the bat as opposed to taking the edge. India also left alone more balls in the first 15 overs - 38 - than in any of their previous innings. They also used the crease more, happy to cut and work the ball of the back foot. Dhawan provided the impetus, punishing every small error, hitting seven fours in his 35.

By the time Chris Woakes got rid of the openers in quick succession, they had added more than any Indian opening partnership outside Asia and the West Indies since December 2013. Cheteshwar Pujara then put India in a further spot of bother with an extremely uncharacteristic dismissal: a hook in the last over before lunch after having sworn off that shot six years previously. Good bowling and tough conditions perhaps force you to look for other scoring options.

At 82 for 3, it seemed it was all down to Kohli again to rescue India's day, but this time he had company. Rahane was finding form. Kohli started watchfully, respecting Stuart Broad who had got him out last. Rahane took the responsibility to do the early running, benefiting from the lack of extravagant movement. The sun came out, the movement began to die, a rusty Ben Stokes bowled too short, and for the first time since the first day of the series, batting seemed like an occupation where you needed to make big mistakes to fail.

Kohli and Rahane did make mistakes early on, but small ones. Kohli nearly got out first ball, playing a defensive push to a wide ball. Rahane edged a couple of short-of-a-length deliveries, but they didn't go to hand. Once the movement died, and when England went to Rashid, these two were set: Rahane 27 off 38, and Kohli 23 off 47. Rashid put on an absolute buffet of five overs for 29 runs, failing to help James Anderson, who was bowling well at the other end, and by the time he was done India were 170 for 3.

Both soon brought up their fifties, and now was Anderson's turn to make a mistake. On 57, Rahane unleashed a full-blooded cut shot off Woakes, high over point, where Anderson went airborne and spilled a tough chance. Dropped catch No. 9. This heralded a period where Kohli and Rahane matched each other shot for shot, putting on an exhibition of drives and cuts. This was a period where India wanted to dominate, and Rahane took the lead. Before he edged a drive on the up, he had played attacking shots to each of the previous six deliveries. This was a time to attack: the pitch had settled down, the new ball was 13 overs away, just that this ball seamed a touch to take the fatal edge.

This wicket just reinforced Kohli's resolve. It was almost unthinkable Kohli would repeat the mistake. Forget Johannesburg, and six of his last first-innings half-centuries ended between 149 and 243. Rashid redeemed himself with Kohli's wicket only for the second time in his 90s. Kohli saw a full ball, bowled with a scrambled seam as usual, went for the big drive, but got an edge to slip.

Pant then announced himself with a six second ball, having picked Rashid's wrong'un and lofting it back over his head. The first recorded Indian to get off the mark in Tests with a six, Pant showed composure after that, clipping nicely off his pads after a string of plays and misses outside off. He ended the day unbeaten on 22 off 32.

At the other end, England were left frustrated by their fielding again. It was about six overs before the eventual end of day's play when Broad produced an edge from Hardik Pandya. The lob was dropped at third slip by Keaton Jennings. Even though Anderson got Pandya with the last ball of the day's play - Pandya added only four after the drop - England had lost an opportunity to cause damage with the new ball in the dying moments of the day.

Sidharth Monga is an assistant editor at ESPNcricinfo