Nazmul Hossain scalped three Lankan batsmen while Shakib al Hasan and Abdur Razzk claimed two wickets each.
Chamara Kapugedera was the top scorer for Sri Lanka as he made a 62, facing 92 deliveries.
Earlier, Sri Lanka got off to a poor start as Hossain dismissed Mahela Jayawardene, Kumar Sangakkara and Tillakaratne Dilshan after the visitors were invited to bat.
Hossain gave Bangladesh an early breakthrough when he clean bowled Sri Lankan captain Mahela Jayawardene in the fourth over.
Hossain then got Sangakkara (6) caught by Nazimuddin in the covers and bowled out Dilshan (19) to rattle the visitors.
Lahiru Thirimanne and Kapugedera then rescued the side with a gritty 88-run stand for the fourth wicket.
However, spinners Abdur Razzak and Shakib Al Hasan then spun magic to rip apart Sri Lanka middle order.
Razzak got Thirimanne stumped out two short of his half ton to give Sri Lanka fourth blow.
After Kapugedera reached his half-ton, Razzak struck again to get rid of the right hander.
Shaib Al Hasan then dismissed Farveez Mahroof and Nuwan Kulasekara in quick succession to leave the visitors reeling.
Nuwan Kulasekara (1) was the seventh batsman to fall as he was trapped leg before wickets by Hasan who earlier removed Farveez Mahroof at the score of 3.
Bangladesh have brought in Nazmul Hossain in place of Shafiul Islam.
Sri Lanka have replaced Dinesh Chandimal and Seekkuge Prasanna with Chamara Kapugedera and Sachithra Senanayake.
Despite the huge following that the Bangladesh cricket team has, it hasn’t been too successful in the international arena, and a berth in the Asia Cup final will really mean a lot for the country.
If Bangladesh beat Sri Lanka in this final league encounter, they will be same on the points table with India and will qualify for the final by virtue of beating MS Dhoni’s men in the league stage.
The Indian team, of course, is hoping that a demoralized Sri Lanka, after crashing out, will play one good game and help them go through.
Bangladesh: Mushfiqur Rahim (Capt.), Tamim Iqbal, Nazimuddin, Jahurul Islam, Shakib Al Hasan, Mahmudullah, Nasir Hossain, Mashrafe Mortaza, Abdur Razzak, Shahadat Hossain, Nazmul Hossain.
Sri Lanka: Mahela Jayawardene (Capt.), Tillakaratne Dilshan, Kumar Sangakkara, Upul Tharanga, Lahiru Thirimanne, Nuwan Kulasekara, Farveez Maharoof, Lasith Malinga, Suranga Lakmal, Chamara Kapugedera, Sachithra Senanayake.