The Indian bowlers toiled hard through the day to bowl out the hosts but failed to disturb them much.
India lost the wicket of Shikhar Dhawan (6) while Murali Vijay (11*) and Cheteshwar Pujara (4*) remained not out at stumps.
James Anderson gave India their first blow in the first innings by picking up the wicket of Dhawan.
Resuming the day from overnight score of 247 for two, both Ballance, who had already hit a century, and Ian Bell (167), added 142 runs in their partnership to make things more difficult for MS Dhoni's men.
Ballance continued his form on the second day and added 54 runs more to his overnight score of 104 to be dismissed at 156 by part-time spinner Rohit Sharma.
Ian Bell, however, returned to form and played a crucial knock of 167 runs. His smashed 19 boundaries and three sixes in the knock which reflected his experience and skills quite well.
India picked up the wickets of Joe Root (3) and Moeen Ali (12) to give England quick blows.
Bhuvneshwar Kumar picked up both the wickets and then added his third one by dismissing Bell.
Jos Buttler, who made his debut in the match, dazzled on the way to 85 from 83 balls.
He smashed nine boundaries and three sixes in his innings.
While the Indian bowlers struggled in the innings, it was Kumar who remained the top wicket taker as he picked up three followed by Ravindra Jadeja with his two.
Sharma and Mohammed Shami shared one each.
India lead the series 1-0