Morgan, who began his international career with Ireland, steadied his side with a fine unbeaten 110 to thwart Bangladesh's hopes of a first win over England.
England, who take an unassailable 2-0 lead in the three-match series, won with seven balls to spare after overhauling the home side's 260 for six.
Left-arm spinners Shakib Al Hasan and Abdur Razzak shared three wickets each but Morgan held his nerve after a late collapse.
Morgan had shared a 90-run fifth wicket stand with Matt Prior [ Images ] (42) but England lost wickets in quick succession to be struggling on 229 for eight.
Morgan ended Bangladesh hopes though, finishing the game in style with a six to midwicket off paceman Shafiul Islam, who conceded 16 runs in the 49th over.
Earlier, captain Alastair Cook [ Images ] hit a second successive half-century before falling for 60.
Wicketkeeper Mushfiqur Rahim and opener Imrul Kayes provided the backbone in the Bangladesh innings with a 90-run partnership for the third wicket.
Rahim made 76 while Kayes scored 63.
The third match of the series will be held in Chittagong on March 5.