Chasing a target of 260 after a century stand by Mohammad Rizwan and Imad Wasim had rescued the Pakistan innings, Zimbabwe were bowled out for just 128 with Shah recording figures of 6 for 26.
The hosts had gained the upper hand in the morning by winning the toss and reducing Pakistan to 128 for five, but Rizwan and Wasim added 124 for the sixth wicket.
Both batsmen ended up scoring at a run a ball on a dry surface, with Rizwan finishing unbeaten on 75 and Wasim run out for 61 in the final over of the innings.
Shoaib Malik also chipped in with three wickets as the Zimbabwean innings lasted just 37 overs.