Sri Lanka scored 166 for the loss of two wickets on the fourth day to confirm the win, after Bangladesh had been bowled out for 181 yesterday.
Sri Lanka got off to a shaky start, losing their first wicket on only the fifth ball of the day without adding to their overnight score of 25-0, Upul Tharanga (19) caught by Shahriar Nafees off Sayed Rasel.
Kumar Sangakkara then joined opener Vandort for a 90-run partnership, before being caught and bowled by Enamul Haque on 46.
Captain Mahela Jayawardene scored an unbeaten 26 and hit a boundary to seal victory before lunch.
''It was not an easy victory. In the first two days they pushed us really hard and played very good cricket,'' said Jayawardene.
''We made lot of mistakes on the first day and they took the advantage.'' Bangladesh had won the toss and batted well on the first day, chalking up 319 all out. Sri Lanka made 338 in reply before Muttiah Muralitharan crushed Bangladesh's second innings with a six-wicket haul for 54 runs.
Muralitharan took nine wickets for the Test and moved past the 1,000-mark for Test and One-day wickets combined.
The second Test begins in Bogra on March 8.