Sri Lanka scored 170-6 off their 20 overs, set up by Bhanuka Rajapaksa's unbeaten 71 from 45 balls. Mohammad Rizwan scored 55 in Pakistan's reply but Pramod Madushan took 4-34 to end their hopes.
The win marks a big turnaround for Sri Lanka, coached by former England coach Chris Silverwood, after they lost their opening game to Afghanistan.
Victory looked unlikely when Sri Lanka slipped to 58-5, before Rajapaksa and Wanindu Hasaranga came together.
They added 58 for the sixth wicket as Hasaranga scored 36 from 21 balls to steer them to a challenging total. Fast bowler Haris Rauf led Pakistan's bowling attack with 3-29.
Sri Lanka's bowlers took wickets regularly throughout Pakistan's chase to restrict their scoring, despite Rizwan's efforts at the top of the order. Seamer Madushan took three top-order wickets quickly, while leg-spinner Hasaranga capped a fine all-round performance with figures of 3-27.
"There was always confidence that the team had talent, we just needed a method," said Silverwood. "We worked hard and the results are showing. Our young seam attack was superb, but it was a team effort."
Only India have won more Asia Cup titles than Sri Lanka, with seven victories. Pre-tournament favourites India failed to reach the final following defeats by Sri Lanka and Pakistan in the Super Four stage.