Pakistan will face Sri Lanka, who edged Canada by 15 runs, in Monday's final.
Zimbabwe started brightly and were 62-1 at one stage before losing seven wickets for just 45 runs as they struggled to 107-8.
Shoaib and Salman Butt, who made 33 not out, put on 96 for the second wicket as the Asian giants reached their target with one over to spare.
Zimbabwe opener Hamilton Masakadza made 53, but none of his team-mates could match his ability with the next highest score being the extras at 18.
Masakadza was in flamboyant form hitting a giant six off Abdur Rauf before smashing two more off Anwar Ali, one of which landed out of the ground.
But once fellow opener Cephas Zhuwawo was removed for 12 and Masakadza was run out by Fawad Alam, Zimbabwe crumbled.
In reply, Pakistan lost Shahid Afridi for just five but Khan and Butt put on a comfortable 96 in just over 15 overs as they eased to victory.
Sri Lanka piled up 153-7 off their 20 overs against Canada for whom opener Rizwan Cheema struck an entertaining 43-ball 68 which briefly hinted at an upset win.
But the hosts fell short with spin wizard Ajantha Mendis grabbing 4-15.
Cheema smashed six sixes after his side had been reduced to 14-3 and helped his side to 80-3 after 10 overs before Mendis worked his magic.
Sri Lanka's top-scorer was skipper Mahela Jayawardene with 35 who looked in good touch pulling Eion Katchay for six before stepping onto the front foot to drive classily through the covers.
He fell lbw to Balaji Rao, Canada's legspinner, who returned figures of 3-21.