It leaves the Zimbabweans requiring another 55 runs to get the hosts to even bat again.
West Indies captain Darren Sammy led from the front topscoring with 73, before taking two smart catches.
He came to the crease just after lunch with his team labouring at 151 for six in reply to the visitors' first innings total of 211, but then he dominated a 106-run seventh-wicket partnership with Denesh Ramdin (62) to tilt the balance of play in his side's favour.
Kyle Jarvis' career-best test innings figures of five for 54 limited the home side to a total of 307 and a lead of 96.
However worse was to follow for the Zimbabweans in the 14 overs they faced to the close of play as tearaway fast bowler Shannon Gabriel removed Tino Mawoyo.
Spinner Shane Shillingford also snared two wickets in two overs to have the visitors praying desperately to get off the pitch and to the safety of the pavilion.
Given the frailties of their middle and lower-batting as evidenced in the first innings, their prospects of avoiding a massive defeat on the third day appear unlikely on a pitch playing increasingly at varying heights.
Captain Brendan Taylor will resume on the third morning with nightwatchman Ray Price, whose economical spin was sparingly used by his skipper, especially when Sammy and, to a lesser extent, Ramdin were on the go in mid-afternoon.
Jarvis started the day from where he had left off the previous evening, removing Darren Bravo to a catch at the wicket while Tendai Chatara claimed a notable first test scalp, a lifting delivery taking the glove of Chris Gayle and offering a simple catch to Taylor at second slip.
However the hour before lunch was dominated by the effortless batting of Marlon Samuels, the elegant right-hander stroking his way to a classy 51 only to be caught behind in what proved the final delivery to the interval off part-timer Masakadza.
That delight was increased shortly after the resumption when the evergreen Shivnarine Chanderpaul got an under-edge to an attempted pull off Jarvis and Zimbabwe sensed the possibility of gaining a first innings lead with only Sammy standing between them and the tail-enders.
Never reluctant to go over the top, the all-rounder smashed four sixes and eight fours off 69 deliveries, taking a particular liking to Graeme Cremer, the leg-spinner suffering through 20 wicketless overs in which he conceded 103 runs.
Ramdin, on his 28th birthday, was the perfect foil to his rampaging captain and by the time Sammy played on to Masakadza just before tea, the West Indies had already wrested the psychological advantage even as they continued to build on the first innings lead.
SRK-Gauri anniversary: B-Town stars and their non-filmi better halves
Birthday special: Popular mothers and daughters in Bollywood
Spotted: 'Kaabil' star Hrithik Roshan with dad Rakesh Roshan
'Rock On 2' trailer launch: Farhan, Shraddha enthrall audience with live gig
Flashback: When bikini babes set a new world record in Australia