Bangladesh, reeling from defeats in the first two one-dayers and the preceding Test series, would have restricted the home side further but for a butter-fingered display in the field.
The lone resistance for the hosts came from Jehan Mubarak who top-scored with an 82-ball 72 after Bangladesh skipper Mohammad Ashraul elected to field in a match reduced to 40 overs a side due to a wet outfield.
The 26-year-old Mubarak lifted the team from a shaky 61-4 with a valuable 78-run stand for the fifth wicket with Tillakratne Dilshan (39).
Debutant Mohammad Mahmudullah chipped in with two wickets, including that of Upul Chandana who was caught brilliantly by Tamim Iqbal near the boundary, the only bright spot in an otherwise sloppy fielding show by the visitors.
Bangladesh dropped at least four catches and missed three run-out opportunities.
Sri Lanka were off to a tentative start, losing their top three wickets with 44 runs on the board.
Prolific left-handed opener Sanath Jayasuriya (eight) was the first to be dismissed when he nicked one to wicketkeeper Mushfiqur Rahim off Shahadat Hossain.
Upul Tharanga started in an aggressive fashion hitting three fours, two of them in an over by Syed Rasel, but the bowler had the last laugh when he had the opener trapped leg before for 14.
Chamara Kapugedera, playing his first match of the series, was caught by substitute fielder Mehrab Hossain off Ferhad Reza.
Kumar Sangakkara (18) frittered away a fine start, driving away from his body to be caught at mid-off off Razzaq.
Dilshan gave Mahmudullah his maiden one-day wicket when he tried to reverse sweep a quicker one from the off-spinner but missed it completely.
Sri Lanka 196 all out in 39.5 overs (Mubarak 72, Tilakratne Dilshan 39; Razzak 3 for 47, Mahmudullah Riad 2 for 28, Rasel 1 for 18) Vs Bangladesh.