Chatara's Test-best figures of five for 61 proved the crucial difference despite an unbeaten 79 by Pakistan captain Misbah-ul-Haq.
The two-match series finished tied at 1-1 after Pakistan won the first Test at the same venue by 221 runs.
Resuming at 158 for five, Pakistan suffered an early blow when Chatara trapped Adnan Akmal leg before wicket with only five runs added. Akmal, who made 20, went back to a ball which angled in towards his stumps.
Chatara returned to the attack and immediately claimed the wicket of Saeed Ajmal in almost identical fashion to the way he dismissed Akmal, with the batsmen going back to a ball which cut back sharply and hit him on the pads.
Also Read
Misbah faced 161 balls in reaching 58 at lunch. He stepped up the pace after the interval, keeping the strike with singles in the first two overs from Chatara and Brian Vitori, then taking 11 runs off an over from Chatara, including two boundaries. Two more fours came from Vitori's next over.
Last batsman Rahat Ali edged a single off the next delivery. Seeking to retain the strike, Misbah pushed the last ball of the over into the covers but sent Rahat back as Hamilton Masakadza swooped to pick up the ball. Rahat was unable to regain his crease and was run out comfortably, sparking exuberant celebrations by the Zimbabwe players.
It was only their fifth win against a major Test nation - their third against Pakistan - and their most significant victory since they beat India in 2000/01.