Batting first, Sabbir Rahaman's 54-ball-80 helped the home team reach a competitive 147 for seven in 20 overs.
In reply, Sri Lanka looked like chasing the target easily till the first 10 overs but suffered a dramatic batting collapse as they could only score 124 for eight in the end.
Mustafizur Rahaman (1/19 in 4 overs) again bowled brilliantly at the death using all the variations in his armoury to help his team notch up their second win in the tournament.
Spinners Shakib Al Hasan (2/21 in 4 overs) and Mahmudullah Riyadh (1/14 in 2 overs) complemented Mustafizur well as their six overs produced only 35 runs and also got them three wickets.
Also Read
The loss of four wickets for 16 runs in between the end of 11th and 15th over was the turning point for the 'Tigers', as the home team is fondly referred to in this part of the world.
Soumya Sarkar took a lovely catch running backwards from his mid-off position to dismiss Tillekaratne Dilshan (12). Dinesh Chandimal (37) and Shehan Jayasuriya (26) added 56 runs for the second wicket as Sri Lanka were cruising along at 76 for one as the 11th over was coming to an end.
(REOPENS FGN27)
Milinda Siriwardana was caught by Sabbir off Mashrafe Mortaza in the deep mid-wicket boundary to make it 92 for five as a Bangladesh victory looked inevitable.
Earlier, Sabbir took on the Sri Lankan bowling attack, blasting his way to a 54-ball-80 that had 10 boundaries and three sixes as Bangladesh posted a respectable 147 for seven in 20 overs.
His innings is more praiseworthy, considering the fact that Bangladesh were reduced to 26 for three with openers Mohammed Mithun (0), Sarkar (0) and veteran Mushfiqur Rahim (4) back in the dug-out.
However, the fall of the wickets at the other end did not deter Sabbir from playing his natural game.
It started in the fourth over bowled by Nuwan Kulasekara, when Sabbir muscled him through vacant mid-wicket region. The next shot was a six through the same region, followed by a cover drive and back cut for a boundary.
Sabbir's 50 came off 38 balls with a mistimed six off Jayasuriya which was followed by couple of attractive boundaries.
Such was his dominance that when he was finally out for 80, Bangladesh's total score was only 108. It was again left to Mahmudullah Riyadh (23 not out off 12 balls) to Bangladesh to a respectable total.