With Bangladesh needing three runs off the last ball to win, Thisara Perera caught and bowled Anamul Haque for Sri Lanka to win the thrilling first Twenty20 by two runs on Wednesday.
Victory didn't look possible for the Bangladeshis until the last balls.
They needed 29 off the last two overs, then 17 off the last over.
Haque edged a boundary past the wicketkeeper off the first ball, and scored two off the second. Next ball, Farhad Reza was run out when Haque wanted to retain the strike and sent him back too late. Haque hit the next two deliveries through cover to the boundary, leaving one ball left and three to win and two to tie.
With the Zahur Ahmed Chowdhury Stadium crowd roaring, Perera bowled a full toss but Haque mishit it straight up, and Perera was underneath to catch him out.
Bangladesh finished on 166-7 in reply to Sri Lanka's 168-7.
Bangladesh's openers made a decent start of 52 in seven overs but Sri Lanka's bowling was disciplined. Haque top-scored with 58 off 45 balls, including seven boundaries.
Perera and Nuwan Kulasekara picked up two wickets apiece.
Kusal Perera kept Sri Lanka's innings together with 64 off 44 balls after seasoned fellow opener Tillakaratne Dilshan was out for a duck in the first over.
Kulasekara finished what Thisara Perera started with 31 off 21, hitting one four and two sixes, while Perera was not out on 19.
For Bangladesh, debutant Arafat Sunny, Shakib Al Hasan and skipper Mashrafe Bin Mortoza claimed two wickets each.
The second and last match is on Friday.
Who's the best test cricket captain?