Sri Lanka battled hard to beat hosts Bangladesh by three wickets in the final league match of the Asia Cup in Dhaka on Thursday, reaching the final with a perfect record.
Sri Lanka, who will meet defending champions Pakistan in the final on Saturday, restricted Bangladesh 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.
Mathews and Chaturanga de Silva (44) lifted Sri Lanka from a perilous 75-5 with a 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 innings, smashing five fours.
Despite two late wickets, Mathews kept his cool, hitting the winning boundary towards mid-wicket.
Paceman Al-Amin Hossain finished with figures of two wickets for 42 runs.
Bangladesh, whose dreams of reaching the final were shattered by Tuesday's three-wicket defeat at the hands of 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 (0), Lahiru Thirimanne (33) and Ashan Priyanjan (24) were also removed before Mathews took over the responsibility of steering the team to victory.
Mathews was happy with his team's performance.
"I was under a little bit of pressure, to be honest," said Mathews. "We were losing wickets and had to consolidate. Chaturanga batted beautifully and we had a good partnership, which augurs well."
Bangladesh captain Mushfiqur Rahim said his side had room for improvement.
"We have a couple of areas to work on. We had a chat and said what we showed against Afghanistan (defeat) was not good enough for international cricket, and was disappointing for the fans."
Bangladesh, who won the toss and opted to bat, struggled after a good start.
Sri Lankan spinners Priyanjan (2/11) and Ajantha Mendis (2/55) put the brakes on before Thisara Perera and Suranga Lakmal, also with two wickets apiece, 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 (1) within the space of a few balls.
Nasir Hossain (30) and Mohammad Mahmudullah (30) shared an innings-repairing sixth-wicket stand of 55 to give the scoreboard some respectability. Shakib Al Hasan made 20.
Bangladesh, who were runners-up to Pakistan in the last Asia Cup in 2012, finished the event with four defeats in as many matches.
Five-time champions India lost two of their four matches, against Sri Lanka and Pakistan, while Afghanistan recorded one win and three defeats.
Live Commentary, Sri Lanka Innings:
Commentary, Bangladesh Innings: