Iqbal scored 112, his fourth century in the 50-over format, before he was run out as the tourists made 259 for eight. He put on 75 for the fifth wicket with Nasir Hossain, who smashed a quickfire unbeaten 73, in an innings delayed by floodlight failure.
No-one else put up much resistance to the home attack, though, Lasith Malinga and Angelo Mathews ending with two wickets apiece.
Sri Lanka won the toss and elected to bowl and it was not long before they had their opponents on the ropes.
Thisara Perera bowled Anamul Haque for 13, Nuwan Kulasekara removed Mohammad Ashraful for a duck and Mathews trapped Mushfiqur Rahim lbw for three to leave Bangladesh on 63 for three.
Mahmudullah joined the impressive Tamim at the increase and hung around a bit longer, reaching 29 before he became Mathews' second victim, sending an outside edge through to Kumar Sangakkara behind the stumps.
Tamim, who was dropped on 54 by Matthews at mid-off, continued to punish that error, bringing up his hundred from 129 balls.
His knock had lasted 136 balls and included 10 fours and a six when he finally fell, run out by Dinesh Chandimal while attempting a quick single.
By that point he had helped guide Bangladesh to 204.
Hossain continued the good work, smashing six fours and three maximums in his 59-ball knock to take the tourists past the 250 mark as three more partners came and went.