At the close, Bangladesh were 98 without loss from 57 overs with Nafis Iqbal on 55 and Javed Omar on 36. Their opening partnership was Bangladesh's highest in 36 Tests.
Omar was dropped on five by Hamilton Masakadza off Christopher Mpofu in the third over when the score was seven.
Bangladesh recorded their previous record opening partnership of 91 in the first Test against Zimbabwe in Chittagong.
Earlier, the tourists were bowled out for 286 in their second innings just after lunch, with Taibu stroking 19 fours and two sixes in his 153.
Enamul Haque Junior was Bangladesh's best bowler, taking Zimbabwe's last four wickets to finish with five for 105.
The 18-year-old, adjudged man-of-the-match in the first Test when the home team recorded their first win in 35 attempts, became the first Bangladesh player to take 10 wickets in a match when he trapped Graeme Cremer lbw for nought.
Zimbabwe, 1-0 down in the two-match series, resumed on 203 for six and soon lost Tinashe Panyangara (six) who was stumped by Khaled Mashud off Haque.
Taibu, who made 92 in the first Test and 85 not out in the first innings in Dhaka, put on 65 with Douglas Hondo for the ninth wicket, Hondo contributing three before being caught by Aftab Ahmed off Haque.
The left-arm bowler struck again to end Taibu's innings, caught by Tapash Baisya after facing 292 balls.
Zimbabwe have just returned from suspension after the International Cricket Council ruled the team were too weak to play test cricket.
"We would like to start the fifth day with victory in mind as we have all 10 wickets intact. I'm hopeful," said Bangladesh captain Habibul Bashar.
"We are in very good position. We passed the day very successfully. We ended the fourth day exactly as per our plan. We've got what we have expected."
Zimbabwe vice-captain Dion Ebrahim said: "It is very frustrating. Obviously we would like to have had them two or three down but we were not able to get wickets."
Scoreboard:
Zimbabwe first innings: 298 (T.Taibu 85 not out, S.Matsikenyeri 51; Enamul Haque Jnr 7-95)
Bangladesh first innings: 211 (Mohammad Rafique 56; D.Hondo 6-59)
Zimbabwe second innings (overnight 203-6)
S.Matsikenyeri lbw b Mashrafe Mortaza 14
B.Rogers lbw b Mashrafe Mortaza 20
D.Ebrahim lbw Mashrafe Mortaza 1
H.Masakadza c Rajin Saleh b Mohammad Rafique 1
B.Taylor b Enamul Haque jnr 78
T.Taibu c Tapash Baisya b Enamul Haque jnr 153
E.Chigumbura b Khaled Mashud b Mohammad Ashraful 0
T.Panyangara st Khaled Mashud b Enamul Haque 6
G.Cremer lbw Enamul Haque jnr 0
D.Hondo c Aftab Ahmed b Enamul Haque jnr 3
C.Mpofu not out 1
Extras (lb-2, nb-7) 9
Total (all out, 103 overs) 286
Fall of wickets: 1-30 2-36 3-37 4-37 5-187 6-196 7-212 8-220 9-285
Bowling: Mashrafe Mortaza 19.4-7-51-3, Tapash Baisya 13.2-2-50-0, Mohammad Rafique 24-9-56-1, Enamul Haque jnr 37-8-105-5 (nb-7), Mohammad Ashraful 9-2-22-1
Bangladesh second innings
Javed Omar not out 36
Nafis Iqbal not out 55
Extras (nb-7) 7
Total (for no loss, 57 overs) 98
To bat: Habibul Bashar (captain), Khaled Mashud, Rajin Saleh, Mohammad Ashraful, Aftab Ahmed, Mohammad Rafique, Mashrafe Mortaza, Tapash Baisya, Enamul Haque Junior.
Bowling: Panyangara 6-0-15-0 (nb-6), Mpofu 13-5-18-0, Hondo 11-4-16-0, Chigumbura 9-3-16-0 (nb-1), Cremer 11-2-20-0, Matsikenyeri 3-0-9-0, Masakadza 3-0-3-0, Taylor 1-0-1-0