Bell made 138, his 10th Test century, and was well supported by Tim Bresnan [ Images ], who hit an unbeaten 74 as the pair shared a sixth-wicket stand of 143 before England eased past Bangladesh's first innings total of 419.
Bresnan was fortunate not to be given out on five when Imrul Kayes caught what replays suggested was an inside edge off the bowling of Shakib Al Hasan.
Bell then survived an lbw decision off the bowling of Abdur Razzak when on 82. Bangladesh missed another chance to dismiss Bell on 119, with Kayes dropping him at square leg off paceman Shafiul Islam.
Bell was finally out going for a slog sweep against Shakib, only managing to sky the ball to mid wicket where Jahirul Islam completed the catch.
Bangladesh tasted early success on the third morning, Shakib bowling Jonathan Trott with the England opener failing to add to his overnight total of 64.
Matt Prior [ Images ] joined Bell at the crease and survived a close lbw appeal off Rubel Hossain while on nine, but he regained focus and started padding the run rate after the Bangladeshi spinners had kept England on the back foot for the first hour.
He completed his 50 with a boundary over mid-on off Mahmudullah, and smashed Shakib for two fours in the next over off successive balls before the left-arm spinner had his revenge.
Shakib bowled Prior on 62, ending his 98-run partnership with Bell.
Bangladesh trail England 1-0 in the two-Test series.
Bangladesh first innings: 419
England first innings (overnight 171-3)
J Trott b Shakib 64
I Bell c Jahirul b Shakib 138
M Prior b Shakib 62
T Bresnan not out 74
G Swann run out 6
S Broad lbw b Mahmudullah 3
J Tredwell not out 0
Extras (b-9 lb-11 nb-6 w-1) 27
Total (eight wickets; 154 overs) 440.
To bat: S Finn.
Fall of wickets: 1-29, 2-105, 3-107, 4-174, 5-272, 6-415, 7-426, 8-434.
Bowling: Shafiul 14-3-45-0 (1w), Razzak 37-7-127-1, Shakib 57-27-99-4, Mahmudullah 15-3-36-1, Rubel 23-4-80-1 (nb-6), Naeem 7-0-29-0, Tamim 1-0-4-0.