Mohsin top-scored with 86 and then rattled Sri Lanka with two early wickets as Pakistan fought back after being dismissed for 212 to bowl their rivals out for 189.
Pakistan will take on the West Indies in the fourth quarter-final in Fatullah on February 8.
Sri Lanka, which finished second in the group, will clash with England on February 7 in Mirpur.
Pakistan's total was built around Mohsin's attractive run-a-ball innings, which was studded with eight hits to the fence and a six.
More From This Section
Mohsin, who was on 61 at the fall of the seventh wicket, smashed 23 runs in the 47th over bowled by seamer Asitha Fernando, which included five runs for an overthrow.
Moshin was bowled in the next over, trying to reverse sweep left-arm spinner Damitha Silva, who finished with two wickets for 41 runs.
Thilan Nimesh and Wanidu Hasaranga also claimed two wickets each, but ambidextrous 17-year-old Kamindu Mendis caught the eye with his rare talent to bowl both right-arm off-breaks and left-arm spin.
Mohsin, who was later named man of the match, stung early in Sri Lanka's reply, grabbing the first two wickets by the sixth over with his medium-pace bowling.
Sri Lanka were reduced to 63 for four before Mendis, who bats left-handed, scored 68 and Vishad Randika made 46 while adding 84 for the fifth wicket.
Pakistan kept the pressure on the batsmen to clinch victory in the 47th over as leg-spinner Shadab Khan finished with three for 31. Sameen Gul, Mohsin and Ahmad Shafiq shared six wickets between them.
Brief scores:
Sri Lanka: 189 all out; 46.4 overs (Kamindu Mendis 68, Vishad Randika 46; Shadab Khan 3/31, Sameen Gul 2/29, Hasan Mohsin 2/28, Ahmad Shafiq 2/23).