Bhuvneshwar (4/46) completely wiped out the England top-order before Ballance fought back with a gutsy 110 that took England to 219 for six in the first innings, trailing India by 76 runs
Resuming the day at 290 for nine, the Indians could add another five runs before they were packed up for 295 runs in the first innings.
Ben Stokes (2/40) struck in the second over of the day to get rid of overnight batsman and last wicket Mohammed Shami (19), who was caught at second slip by England skipper Cook. Ishant Sharma was unbeaten on 12.
What followed next was an interesting battle between the Indian bowlers and the English batsmen.
India completely dominated the first two sessions of the game as England were left struggling at 125 for four at tea.
But Ballance and Moeen Ali (32) provided some respectability to the innings with their 98-run stand for the fifth wicket that saved England the blushes.
Bhuvneshwar struck in quick succession in the first session to snare the England openers Alastair Cook (10) and Sam Robson (17) and in the next two sessions accounted for Ian Bell (16) and Ballance.A
Ravindra Jadeja trapped Joe Root (13) in front but Hot Spot showed that the Yorkshire batsman had an inside edge while Murali Vijay had Ali lbw for his maiden Test wicket.
With wickets falling in regular intervals, it was Ballance, who fought back well with a patient century that was studded with 15 fours. The Zimbabwean-born cricketer found an able ally in Ali, who was happy playing the second fiddle.
Ballance was extremely lucky to get to his half-century. Stuart Binny almost got him as Ballance found a big edge but neither Dhoni nor first slip Shikhar Dhawan made an attempt to go for what would have been an easy catch.
Ballance, however, had to blame himself for his dismissal as he tried to play down the leg an away going delivery from Bhuvneshwar but got a thin edge and it was well taken by Mahendra Singh Dhoni.
In fact it was a busy day for Dhoni behind the stumps as Bhuvneshwar turned on the heat with some fine bowling to trouble the England batsmen on a green top.
Cook’s poor run with the bat continued as he managed just 10 runs before edging an accurate delivery from Bhuvneshwar that was well taken by Dhoni behind the stumps. It has been over a year since Cook passed the three-figure mark and has scored just 93 runs in his last six Test innings.
Robson (17) was lucky to get a life in the previous over from Mohammed Shami when Ajinkya Rahane dropped a simple chance at second slip. But the English batsman failed to capitalise on the chance as Dhoni took a simple chance giving Bhuvneshwar a second wicket in what was a good first spell and England were left struggling at 31 for two.
Bhuvneshwar got his third wicket soon after the resumption of play as Bell was completely surprised with some steep bounce. It was an odd dismissal as the delivery struck Bell’s gloves before lobbing to Jadeja at third slip.