Zimbabwe resumed day three at 158-4 in response to Bangladesh's first innings total of 391 at the Harare Sports Club.
Robiul Islam (5-85 off 33 overs) and Sohag Gazi (4-59 off 19 overs) bowled well for Bangladesh as they knocked their opponents over for 282.
And despite losing three quick wickets to start their second innings, an impressive rearguard action from Al Hasan (59) and Rahim (50 not out) helped the tourists to 163-5 at stumps, giving them an overall lead of 272 runs.
Malcolm Waller (32) was an early departure on Saturday for Zimbabwe, adding just two runs to his overnight score before he fell victim to the off-spin of Gazi.
Elton Chigumbura (86) was joined at the crease by wicket-keeper Richmond Mutumbami (42) and the pair added 85 runs at brisk pace to take Zimbabwe to 248-5.
But Bangladesh claimed two wickets on the verge of lunch, with Chigumbura's terrific innings – that included eight fours and one six – coming to an end off the bowling of Islam.
Islam also added claimed the scalp of Mutumbami, trapping him lbw, and the wickets continued to tumble after the break.
Bowlers Keegan Meth (16), Shingi Masakadza (five) and Kyle Jarvis (zero) offered little resistance as Zimbabwe lost their last five wickets for just 34 runs.
They came out firing with the ball though, and Bangladesh openers Tamim Iqbal (seven) and Jahurul Islam (two) were both dismissed by Shingi Masakadza (3-33 off 14 overs).
When Mohammad Ashraful (four) was sent packing by Jarvis, Bangladesh were struggling at 18-3.
But Al Hasan and Mominul Haque (29) stemmed the flow of wickets, before Rahim helped the former keep up the pressure with an 84-run partnership.
And although Al Hasan fell just before stumps, Bangladesh's advantage remains strong, with Rahim and Nasir Hossain (six not out) to continue their innings when play resumes on Sunday.
First Posted 28 April, 2013 10:38AM AEDT