Zimbabwe were sent into bat first, and despite a feisty 34 from Tinashe Kamunhukamwe, made only a paltry 118-9 as wickets tumbled at regular intervals.
But Pakistan, who beat South Africa 3-1 in a four-match series earlier this month, fell short in a laboured chase as they were bowled out for 99.
Luke Jongwe emerged the home hero as he took the important wickets of Mohammad Rizwan (13) and captain Babar Azam (41) to finish with figures of 4-18.
It was the lowest total defended in a T20 international in Harare and a first win for Zimbabwe over Pakistan in 15 past T20 internationals.
Zimbabwe bowled with accuracy and fielded without mistakes to make up for a poor performance in Wednesday’s first T20 and set up a deciding contest in the last of the three-match series on Sunday.
“It was big turn around for us after the first game,” said stand-in captain Brendan Taylor afterwards.
“I’d be lying if I said I was confident after our batting, but we dug deep and managed to squeeze Pakistan and our commitment and determination got us over the line.”
Brendan Taylor, who missed the first T20I due to an infection, is back in Zimbabwe playing XI and will be leading the side in Sean Williams absence.
Two changes for both the teams; Arshad Iqbal and Asif Ali in for Mohammad Nawaz and Haider Ali in Pakistan while Brendan Taylor and Tarisai Musakanda in for Sean Williams and Craig Ervine.