Chasing a stiff target of 184, Sri Lanka got home by two wickets and with four balls to spare.
They take on Afghanistan, whom they lost to in the tournament opener, in the Super Four at the Sharjah Cricket Stadium on Saturday.
Opener Kusal Mendis led the batting effort for Sri Lanka with a top score of 60 from 37 deliveries which contained four boundaries and three sixes, while captain Dasun Shanaka made 45 from 33 balls with three fours and two sixes.
Medium pacer Ebadot Hossain picked three wickets, while Taskin Ahmed took two for 24.
Earlier, Afif Hossain and opener Mehidy Hasan helped Bangladesh post 183-7.
Hossain scored 39 from 22 balls with four boundaries and two sixes, while Hasan made 38 from 26 deliveries that contained two boundaries and an equal number of sixes. Mosaddek Hossain cracked an unbeaten nine-ball 24 which had four boundaries.
Mahmudullah made 27 from 22 deliveries with a lone four and a six, while captain Shakib Al Hasan scored 24 from 22 balls with three fours.
Sri Lankan medium pacer Chamika took two for 32, while spinner Wanindu Hasaranga picked up 2 for 41.
Earlier, Sri Lankan captain Dasun Shanaka won the toss and opted to bowl.
Bangladesh: 183-7 in 20 overs (Afif Hossain 39, Mehidy Hasan 38, Mahmudullah 27, Mosaddek Hossain 24 not out, Shakib Al Hasan 24, Wanindu Hasaranga 2-41)
Sri Lanka: 184-8 in 19.2 overs (Kusal Mendis 60, Dasun Shanaka 45, Pathum Nissanka 20, Chamika Karunaratne 16, Danushka Gunathilaka 11, Asitha Fernando 10 not out, Ebadot Hossain 3-51, Taskin Ahmed 2-24)