Bangladesh beat Pakistan by 37 runs to set up a meeting with India in the Asia Cup final.
Batting first, Bangladesh were reduced to 12-3 before Mushfiqur Rahim's 99 helped them to 239 in Abu Dhabi. Junaid Khan finished with 4-19.
Imam-ul-Haq made 83 in reply but Pakistan lost wickets regularly, with pace bowler Mustafizur Rahman taking 4-43 as they fell short on 202-9.
Bangladesh face defending champions India in Dubai on Friday.
India won by seven wickets when the sides met in the Super Four stage.