Mehidy and Zakir enabled the hosts to recover from early setbacks and surpass Nepal's 211 for nine with 10 balls to spare.
Bangladesh faces the winner of Monday's quarter-final between Pakistan and the West Indies in the second semi-final on February 11 here.
The first semi-final, on February 9, will feature the winners of quarter-final matches between India-Namibia and England-Sri Lanka.
Nepal's captain Raju Rijal hit 72 (80b, 8x4, 1x6) after winning the toss and electing to bat, but four run-outs in the innings, including that of the captain himself, did not help the team's cause.
More From This Section
Right-arm seamer Mohammad Saifuddin was the pick of the bowlers for Bangladesh, giving away just four runs in the final over to return with figures of two for 38.
Bangladesh, mentored by former Australia international Stuart Law, was made to fight hard for runs as Nepal's bowlers conceded just 21 runs in the first 10 overs.
The home team was reduced to 98 for four in the 29th over when Mehidy joined Zakir to add a match-winning partnership of 117 for the unbroken fifth wicket.
Mehidy returned undefeated on 55 from 65 balls, which also included three fours.
Meanwhile, in the Plate Championship quarter-finals, Afghanistan trumped Fiji by 226 runs, while Zimbabwe defeated Canada by six wickets.
Brief scores:
Nepal: 211 for 9 om 50 overs (Raju Rijal 72; Mohammad Saifuddin 2/38).
Bangladesh: 215 for 4 in 48.2 overs (Zakir Hasan 75 not out, Mehidy Hasan 55 not out; Sunil Dhamala 2/33).