In the match played in Colombo, Sri Lanka achieved the target of 253 runs given by Pakistan on the last ball and defeated Pakistan by two wickets to reach the final.
The final of the Asia Cup will be played between Sri Lanka and India on Sunday.
Kaushal Mendis played a brilliant innings of 91 runs, Asalanka played a match-winning innings of 49 runs, Sudheera Samravakarma stood out with 48 runs.
On behalf of Pakistan, Iftikhar Ahmed took three wickets, Shaheen Shah Afridi took two wickets and Shadab Khan took one wicket.
Pakistan scored 252 runs for the loss of 7 wickets in the allotted 42 overs and gave Sri Lanka a target of 253 runs to win.
Abdullah Shafiq and Muhammad Rizwan scored brilliant half-centuries. Abdullah Shafiq scored 52 runs and Muhammad Rizwan played an unbeaten innings of 86 runs.
Iftikhar Ahmed also played a brilliant innings of 47 runs.
Fakhar Zaman again failed and returned to the pavilion after scoring only 4 runs. Captain Babar Azam was stumped after scoring 29 runs. Muhammad Nawaz scored 12 runs.
On behalf of Sri Lanka, Pathirana guided three players to the pavilion, Pramod Madhushan took two wickets and Vela Laage Thakshana took one wicket each.
The match was supposed to start at 2:30 PM in Colombo, the capital of Sri Lanka, but it was delayed due to rain.