Sri Lanka fought hard to beat hosts Bangladesh by three wickets in the last league match of the Asia Cup in Dhaka on Thursday, gearing up for the final with an all-win record.
Sri Lanka, who will meet defending champions Pakistan in the final on Saturday, kept Bangladesh down to 204-9 before overcoming early jitters to chase down the target in 49 overs.
The four-time champions won all their four matches, this time with some tight bowling and resilient batting led by skipper Angelo Mathews who hit an unbeaten 74.
It was Mathews and Chaturanga de Silva (44) who lifted Sri Lanka from a struggling 75-5 through their sixth wicket stand of 82 runs.
Mathews was in command throughout his 103-ball knock, hitting seven boundaries and a six, while de Silva ably supported him during his 52-ball knock, smashing five fours.
Despite two late wickets, Mathews kept his cool, hitting the winning boundary towards mid-wicket.
Paceman Al-Amin Hossain finished with 2-42.
Bangladesh, whose dreams of reaching the final were shattered after Tuesday's three wicket defeat against Pakistan, had a sniff of a victory after Al-Amin removed Kusal Perera (nought) and in-form Kumar Sangakkara (two) in his first two overs.
Mahela Jayawardene (nought), Lahiru Thirimanne (33) and Ashan Priyanjan (24) were also removed before Mathews took over the responsibility of steering the team to winning shores.
Bangladesh, who won the toss and opted to bat, were left stranded after a good start.
Spinners Priyanjan (2-11) and Ajantha Mendis (2-55) put the brakes on before Thisara Perera (2-29) and Suranga Lakmal (2-32) wrapped up the middle and lower order.
Opener Anamul Haque, who scored a brilliant hundred in Bangladesh's highest one-day score of 326-3 against Pakistan on Tuesday, was once again the mainstay of the batting with an 86-ball 49.
Anamul and Shamsur Rahman (39) gave the home team a solid 74-run start before Mendis struck twice, dismissing Shamsur and Mominul Haque (one) in the 18th over.
Anamul hit two boundaries and a six during his 86-ball knock while Shamsur's 57-ball innings included six hits to the fence.
Nasir Hossain (30) and Mohammad Mahmudullah (30) shared an innings-repairing sixth wicket stand of 55 to give the total some respectability.
Shakib Al Hasan made 20.
Five-time champions India crashed out of the event on Wednesday after losing two of their four matches against Sri Lanka and Pakistan.
Bangladesh, who were runners-up to Pakistan in the last Asia Cup in 2012, finished the event with four defeats in as many matches.
Afghanistan was the fifth team who upset Bangladesh in their maiden appearance in the Asia Cup but lost their remaining three matches.