After winning the toss and opting to field, Pakistan restricted Bangladesh to 111 for seven.
Bangladesh made a poor start after losing Tanzid Hasan for seven and captain Litton Das for just two. Parvez Hossain Emon and Saif Hassan also departed cheaply, leaving Bangladesh 50 for four.
Towhid Hridoy then led the recovery with a quickfire 42 off 25 balls, while Mosaddek Hossain added 11.
Hridoy was eventually dismissed by Sufiyan Muqeem, who also removed Mosaddek as Bangladesh slipped to 99 for six. Sheikh Mahadi and Rishad Hossain added late runs to take the total past 110.
Pakistan also lost early wickets in the chase.
Mahadi dismissed Sahibzada Farhan in the first over before Nasum Ahmed removed Maaz Sadaqat.
Saim Ayub briefly threatened with 21 off 12 balls, including two sixes off Mustafizur Rahman, but the left-arm pacer had him caught at midwicket.
Rishad then dismissed Usman Khan for 14, but Abdul Samad and Hasan Nawaz put Pakistan firmly in control with a match-winning partnership.
Mustafizur had a costly outing despite taking one wicket, conceding 41 runs from his two overs, while Nasum gave away 33 runs for his wicket.
Pakistan’s victory sends them into the Asian Games final, while Bangladesh will play the bronze-medal match on Sunday.