Razzak was brilliantly supported by left-arm spinners Mohammad Rafique and Saqibul Hasan who grabbed two wickets apiece as the tourists lost their way after making a promising start on Thursday.
Zimbabwe added 52 for the opening wicket through Brendan Taylor (38) and Stuart Matsikenyeri (27) after winning the toss, but then found runs hard to come by against the spin trio.
Razzak finished with 4-33 off 10 tight overs, his best in 26 one-day internationals. Saqibul took 2-30 and Rafique 2-35.
Elton Chigumbura (31), Mluleki Nkala (22) and Gray Brent (20) were the other main scorers, but no one could play a long innings after settling down.
Razzak provided the breakthrough when he bowled Matsikenyeri. Rafique and Saqibul then kept pressure in the middle overs, capturing the next four wickets to reduce Zimbabwe to 100-5.
Razzak took the last three wickets in his second spell to ensure his team did not chase a stiff target.