Bell made 167 and Ballance 156 before Test debutant Jos Buttler rode his luck to make 85 as England captain Alastair Cook declared on 569 for seven.
India then saw struggling opener Shikhar Dhawan caught by Cook at first slip off James Anderson for six.
However, Murali Vijay (11 not out) and Cheteshwar Pujara (four not out) survived until stumps, with India 25 for one at the close on the second day - a deficit of 544 runs.
Bell's hundred was his 21st Test century but his first in 20 innings, with the 32-year-old Warwickshire batsman having last got to three figures at this level when making 113 against Australia in Durham in August last year.
Ian Bell celebrates reaching his century as teammate Moeen Ali (R) looks on during the second day of the third Test match between England and India in Southampton. (Reuters Photo)
His innings also took Bell into the top ten of England's all-time leading Test run-scorers with 7,068 runs in 103 matches.
"Individual achievements are nice, but the important thing is we do well as a team," Bell told Sky Sports.
"The more I score, the more it will help," added Bell, whose innings meant both of England's senior batsmen had ended a long sequences of modest scores following captain Alastair Cook's 95 on Sunday.
England, 1-0 down in the five-match series and without a win in their previous 10 Tests, resumed Monday on 247 for two.
Zimbabwe-born left-hander Ballance was 104 not out - his third hundred in six Tests.
Meanwhile Bell, who might have been lbw for a duck to a brilliant delivery from unlucky India debutant Pankaj Singh, was 16 not out.
India, without the injured Ishant Sharma - the seven-wicket hero of their 95-run win in the second Test at Lord's - continued to struggle for penetration, having lost the toss on an even-paced pitch.
Ballance soon surpassed his previous highest Test score of 110, made last time out at Lord's, with three fours in four Bhuvneshwar Kumar balls.
And with the sun breaking through to make conditions ideal for batting, Ballance pulled Singh to the boundary to get to 150 in 278 balls with 23 fours.
But soon afterwards the 24-year-old was given out, caught behind off the gentle spin of Rohit Sharma, the recalled batsman taking his first Test wicket.
Bell's grand century
Bell, after England lost Joe Root and Moeen Ali cheaply early in the second session, reached his hundred in style by driving left-arm spinner Ravindra Jadeja for six.
He then looked up to the skies, with Bell saying afterwards: "My Grandad (who died recently) took me to cricket games when I was young and that one is for him."
Bell scored 20 runs in four successive Jadeja deliveries, the straight six followed by a cover drive for four before another straight six and a cut four completed the over.
Bell eventually holed out off Kumar, having batted for nearly six hours, facing 256 balls with 19 fours and three sixes.
Buttler, in for the injured Matt Prior, was fortunate not to start his Test career with a duck after edging Bhuvneshwar Kumar low towards Ajinkya Rahane, who appeared to hold a catch at second slip.
However, on-field umpires Marais Erasmus (South Africa) and Rod Tucker (Australia) referred the decision to television umpire Rob Bailey, the former England batsman.
As is often the case in these situations, replays clouded the issue and Buttler survived.
Buttler was also dropped by Dhawan at slip on 23, while India captain Mahendra Singh Dhoni missed a chance to stump his opposing wicketkeeper when the Lancashire gloveman had made 59.
The 23-year-old made India pay with the kind of quickfire innings that has already made him England's wicketkeeper-batsman in limited overs cricket, driving Jadeja for six to take England to 500.
Jos Buttler (C) hits a four as MS Dhoni (L) and Virat Kholi (R) look on during the second day of the third Test match between England and India in Southampton. (AFP Photo)
Jadeja, one of four India bowlers to concede more than a hundred runs, eventually had his revenge when Buttler played on, the signal for Cook to declare.
By then, Buttler had scored 85 off just 83 balls with nine fours and three sixes.
Commentary, India 1st Innings