Mahmudullah Riyad scored a Test career-best 150 not out on Thursday as Bangladesh made 468 in the first innings of a one-off Test against Zimbabwe at Harare Sports Club.
In reply, Zimbabwe were 114-1 at the close of play on the second day with opening bat Milton Shumba making 41 and captain Brendan Taylor unbeaten on 37.
Batting at number eight, 35-year-old Mahmudullah added 96 runs to his overnight 54 as the tourists took control after losing two early wickets on Wednesday with just eight runs on the scoreboard.
Mahmudullah bettered his 146 for the Bangladeshi Tigers against New Zealand two years ago by pulling a good length ball from Blessing Muzarabani to deep midwicket for four in the 126th over.
He added one more run with a stroke to deep square leg before the innings closed when 10th-wicket partner Ebadot Hossain was trapped leg before by Muzarabani for a duck.
Mahmudullah reached his century off the third ball of the 100th over as he cut to deep point for four a ball bowled short of a length by Roy Kaia.
Mahmudullah and Taskin Ahmed, who made 75 before being bowled by Shumba, put on 191 runs for the ninth wicket.
Taskin struck 11 fours off 134 balls as Bangladesh sought a second victory in five Tests this year under captain Mominul Haque.
On the opening day, Mominul stabilised a creaking innings with a 70, then Liton Das fired a career-best Test score of 95.
Muzarabani returned the best bowling figures for Zimbabwe, but his four wickets came at a heavy price as he conceded 94 runs in 29 overs.
Zimbabwe put on 61 runs before Shumba was out leg before trying to sweep a Shakib al Hasan delivery from wide of the crease.
Shumba faced 83 balls and struck seven fours while Taylor, standing in as skipper for unavailable Sean Williams, hit six fours off 46 deliveries.
Apart from the Test, Bangladesh will play three one-day and three Twenty20 internationals during a 21-day first tour to the southern Africa nation since 2013.