Chasing a modest 191-run target on Day 5, Bangladesh rode on opener Tamim Iqbal's brisk start and the composed 109-stand in the middle overs as they became the only second team, after Pakistan, from the sub-continent to register a win in their 100th Test.
Iqbal starred the Bangladeshi innings with a well composed knock of 82.
Earlier in the day, Kulswan Perera scored his fifth Test half-century and stitched a 80-run partnership with bowler Surunga Lakmal to help his side recover from the early hiccups and set Bangladesh a 191-run target.
Shakib al Hasan and Mustafizur Rahman were the pick of the bowlers for the visitors as they scalped four and three wickets respectively in the second innings.
The hosts, who had won the first match by a huge margin of 259 runs at Galle, were off to a brilliant start in their second innings but the middle-order collapse didn't allow them to set a formidable target for Bangladesh.
Elated with the win, Shakib said, "It's a great feeling to win a Test match, especially in Sri Lanka. We know how tough they are. The way we are improving, we will win some games. We are having good times at home."
"Now we need to win outside. We knew we were going to chase down anything around 200 as the wicket was not that bad. Obviously we wanted to restrict them below 150 but the last two batsmen batted really well," he added.
Tamim was declared the Man of the Match while Shakib was adjudged the Man of the Series.(ANI)