Ervine hit 107 off 227 balls — his third century in Tests — as the visitors reached 228-6 at stumps after opting to bat first in what is the 100th international match between two teams.
Off-spinner Nayeem Hasan bowled Ervine, who struck 13 fours, shortly before the stumps before finishing with 4-68, the best return for the home side on the opening day.
Nayeem helped Bangladesh restore balance in the contest with two wickets each in the final two sessions after Zimbabwe made a cautious start.
Pace bowler Abu Jayed struck early to remove opener Kevin Kasuza for two as Nayeem took a catch at gully after first run from the bat in Zimbabwe’s innings came in the seventh over.
But other opener Prince Masvaure — who made 64 off 152 balls with nine fours — shared a 111-run with Ervine for the second wicket to put Zimbabwe in control.
Nayeem removed Masvaure with a sharp return catch shortly after the batsman was dropped by Najmul Hossain at slip on 59 runs.
Brendan Taylor, who scored a century in both innings in his previous Test in Mirpur in 2018, soon followed Masvaure as Nayeem bowled him for 10.
The experienced right-hander attempted a reverse sweep but could only connect the ball with his gloves before it smashed onto his stumps.
Ervine and Sikandar Raza added 40 runs for the fourth wicket, before Nayeem removed Raza in the final session of the day.
Jayed trapped Timcyen Maruma leg before for seven for his second wicket after the batsman was reprieved by a TV umpire on one off Taijul Islam.
Wicketkeeper-batsman Regis Chakabva was batting on nine alongside Donald Tiripano, not out zero, when stumps were drawn at the Sher-e-Bangla National Stadium.
Mushfiqur Rahim returned to the Bangladesh lineup after missing out on their previous Test against Pakistan.
Zimbabwe handed Charlton Tshuma his Test debut.
Bangladesh have lost their last six Test matches — five of them by an innings or more — but they have also beaten Zimbabwe five times in their last six encounters. AFP