Misbah had lamented his side's poor batting after Pakistan were beaten by seven wickets on Tuesday, but Hafeez ensured there would be no repeat as his unbeaten 136 from 130 balls led the tourists to 299 for four.
Although Zimbabwe reduced Pakistan to 84 for three in the 22nd over with a clinical performance in the field, Hafeez gained control of the innings in a 129-run stand with Umar Amin, who made a measured 59.
Amin was brilliantly run out by Tendai Chatara soon after, but Hafeez went to his century in the following over and was well supported by Shahid Afridi in the final stages of the innings.
Afridi clubbed three sixes on his way to 39 not out as Pakistan took 64 runs from the final five overs of the innings, leaving Zimbabwe with a huge task if they are to claim their first series victory over the tourists.