Razzak arrived at the crease with the tourists struggling on 185 for seven in the 44th over, and duly clubbed a 21-ball fifty to take them to 252 for nine.
The 30-year-old's previous highest score in ODIs was 35, but the left-hander made the most of being dropped on 25 as he gave Bangladesh the impetus at the halfway stage of the match.
Kyle Jarvis was responsible for the drop off his own bowling, and suffered the consequences as he conceded two of Razzak's five sixes - and 17 runs off the final over of the innings.
Wickets fell at regular intervals, with Nasir Hossain's circumspect 36 the highest score until Razzak's late blitz.
Tendai Chatara and Jarvis struck early on, before Elton Chigumbura picked up key wickets in the middle of the innings and finished with figures of 3 for 39 in his 10 overs.
Yet Zimbabwe were guilty of dropping four catches, including the crucial reprieve of Razzak, which added extra work for the batsmen as they look to square the three-match series.