Bangladesh declared their second innings on 284 for one in 67.4 overs, with Shadman and Shanto unbeaten on 115 and 117 respectively.
Shadman needed 180 balls to reach three-figure score in international cricket. He smashed eight fours along the way. While going to 100 from 85, Shanto hit two sixes and reached his hundred in 109 balls.
Bangladesh only lost the wicket of Saif Hasan before declaring on second innings.
In the second-wicket stand, they added 196 runs, which is now the third-highest stand in the second wicket for Bangladesh in Tests.
Earlier, Zimbabwe tumbled for 276 while replying to Bangladesh's first innings total of 468, and Bangladesh secured a huge lead of 192 runs.
Mehidy Hasan Miraz bagged five wickets, and Shakib Al Hasan took four.
For Zimbabwe, the debutant Takudzwanashe Kaitano scored 87 which was the highest by any Zimbabwean batsman. Brendan Taylor also hit a fifty for the hosts.
Earlier, Mahmudullah Riyad scored an unbeaten 150 for Bangladesh while Liton Das, Taskin Ahmed and Mominul scored 95, 70 and 75 respectively to post a huge first-innings total despite losing two early wickets.