Morgan, who has a previous ODI hundred for Ireland, kept his cool as wickets fell around him in the closing overs. The tourists slipped from 198 for four to 229 for eight, still requiring 32 for victory in 4.2 overs.
Morgan, partnered by debutant James Tredwell, took advantage of the batting powerplay to steer England home with two wickets and seven balls remaining.
Captain Alastair Cook earlier helped his side recover from the loss of early wickets with an assured 60. However, spinners Abdur Razzak and Shakib claimed three wickets apiece to bring Bangladesh right back into the game.
Earlier, Opener Imrul Kayes and Mushfiqur Rahim, who struck 63 and 76 respectively, combined for a 90-run alliance as the hosts made a respectable 260/6 in their 50 overs.
Score Board
BANGLADESH
Tamim c Cook b Broad 30
Imrul Kayes c C’wood b Swann 63
Aftab b Bresnan 4
Mushfiqur c Wright b Bresnan 76
Shakib c&b Swann 14
Mahmudullah b Bresnan 27
Naeem Islam (not out) 18
Shuvo (not out) 14
Extras (B-4, LB-3, W-7) 14
Total (6 wickets; 50 overs) 260
Fall of wickets: 1-46, 2-56, 3-146, 4-166, 5-211, 6-235.
Bowling: Bresnan 10-0-51-3, Broad 6-0-34-1, Swann 10-0-52-2, Wright 9-0-38-0, Tredwell 10-0-52-0,Collingwood 5-0-26-0.
England
Cook c Rahim b Shakib 60
Kieswetter c Kayes b Shafiul 4
Pietersen lbw Razzak 18
Collingwood lbw Razzak 7
Morgan (not out) 110
Prior lbw Razzak 42
Wright b Shakib 7
Bresnan lbw Mahmudullah 0
Swann b Shakib 2
Tredwell (not out) 2
Extras (B-4, lb-3, W-2) 9
Total (for 8 wkts; 48.5 overs) 261
Fall of wickets: 1-5, 2-52, 3-68, 4-108, 5-198, 6-223, 7-224, 8-229.
Bowling: Shafiul 6.5-0-55-1, Rubel 6-0-30-0, Razzak 10-0-52-3, Naeem 6-0-41-0, Shakib 10-2-32-3, Mahmudullah 7-0-30-1, Shuvo 3-0-14-0.
Deccan Herald is on WhatsApp Channels| Join now for Breaking News & Editor's Picks