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 its rival out for 189 in Mirpur.
Pakistan will take on the West Indies in the fourth quarter-final in Fatullah on 8 February. Sri Lanka, which finished second in the group, meets England on 7 February 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.
Pakistan was struggling at 96-4 after being sent in to bat on a hazy morning when Mohsin stepped in to stem the rot with a 61-run stand for the fifth wicket with Salman Fayyaz (33).
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. Mendis gave away 21 runs in four wicketless overs.
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 was reduced to 63-4 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 runs. Sameen Gul, Mohsin and Ahmad Shafiq shared six wickets between them.
Pakistan captain Zeeshan Malik said defeating Sri Lanka had lifted the team's morale for the quarter-final against the West Indies.
“I think we played very good cricket today, both with the bat and ball,” he said. “Mohsin was very good but all the bowlers did well.
“We look forward to our quarter-final and hopefully we will go beyond that as well.”
Sri Lanka's captain Charith Asalanka blamed the defeat on the batsmen's inability to string partnerships, but said his team did not fear England.
“The batting went wrong today,” he said. “The top order batsmen couldn't score runs and form partnerships. Mendis and Randika had a good stand but we couldn't do our job in the end.
“England is a good side. We played each other in December. But I think the conditions will support us. Our spinners are in good form, so I think this will be an advantage for us.”
Scores in brief:
Group B - Pakistan beat Sri Lanka by 23 runs in Mirpur
Pakistan 212 all, 48.4 overs (Hasan Mohsin 86, Salman Fayyaz 33; Damitha Silva 2-41, Thilan Nimesh 2-38, Wanidu Hasaranga 2-30)
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)
4 Feb - South Africa v Ireland; New Zealand v Scotland, Cox’s Bazaar
Quarter-finals (Super League)
5 Feb - Bangladesh v Nepal, Mirpur
6 Feb - India v Namibia, Fatullah
7 Feb - England v Sri Lanka, Mirpur
8 Feb - Pakistan v West Indies, Fatullah
Quarter-finals (Plate Championship):
5 Feb - Afghanistan v Fiji; Canada v Zimbabwe, Cox’s Bazaar
? Top two sides from each group will progress to the Super League stage while the bottom two sides will feature in the Plate Championship