The tourists had reached 331-5 in their first innings by stumps on the third day, trailing Bangladesh's total of 433 by 102.
Masakadza made the most of the home team's sloppy fielding to hit 17 fours and two sixes after starting the day on 15. He was dropped thrice by the same fielder, Shamsur Rahman, in the slips when on 15, 19 and 74. Rubel Hossain, Taijul Islam and Shakib Al Hasan were the unlucky bowlers.
Masakadza, who made just one half-century in six previous Test innings in Bangladesh, shared an unbroken stand of 142 with Regis Chakabva (75 not out) for the sixth wicket.
Chakabva was on four when Bangladesh captain Mushfiqur Rahim missed a simple stumping off Shakib. When he reached nine, the batsman was reprieved by the Decision Review System after being given out leg-before off Shakib.
Masakadza celebrated his fourth Test century with a boundary off Shakib through the third man region.
Shakib, bowling steady left-arm spin, picked up the wickets of Brendan Taylor (37), Craig Ervine (17) and Elton Chigumbura (one) in the post-lunch session to reduce Zimbabwe to 189-5. But Masakadza and Chakabva defied the spinners in the entire final session to lead a spirited fightback.
Bangladesh lead the three-match series after winning the first Test in Dhaka by three wickets last week.
The third Test between the two lowest-ranked teams – Zimbabwe at number nine and Bangladesh at 10 – will be played in Chittagong from November 12-16, followed by five ODIs.
Like Sports on Facebook, follow @ETribuneSports on Twitter to stay informed and join in the conversation.
COMMENTS
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ