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 on Thursday.
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 [ Images ] then joined opener Vandort for a 90-run partnership, before being caught and bowled by Enamul Haque on 46.
Captain Mahela Jayawardene [ Images ] 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 [ Images ] 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.
Bangladesh 1st innings 319 (M. Ashraful 136; L. Malinga 4-57)
Sri Lanka 1st innings 338 (F. Maharoof 72, K. Sangakkara 69, T. Samaraweera 58; S. Hossain 4-83)
Bangladesh 2nd innings 181 (M. Muralitharan 6-54)
Sri Lanka 2nd innings (Overnight: 25-0; Target: 163 runs)
M. Vandort not out 64
U. Tharanga c Nafees b Rasel 19
K. Sangakkara c&b Haque jnr 46
M. Jayawardene not out 26
Extras (b-5 lb-4 nb-2) 11
Total (for 2 wickets, 37 overs) 166
Fall of wickets: 1-25 2-115
Bowling: S. Rasel 8-4-18-1, S. Hossain 8-1-39-0, E. Haque jnr 9-1-50-1 (nb-2), M. Rafique 8-0-28-0, A. Kapali 2-0-6-0, M. Ashraful 2-0-16-0
Result: Sri Lanka won by 8 wickets