Nathan Lyon dismissed Shakib for 84 runs at the stroke of tea as the hosts reached 190-5 after electing to bat first at the rain-soaked Sher-e-Bangla National Stadium.
Shakib added 155 runs with Tamim Iqbal (71) for the fourth wicket to steady the innings after Pat Cummins rocked the side with a three-wicket burst in the morning.
Occasional spinner Glenn Maxwell broke their resilience when he forced Tamim to cut one loose at backward point where David Warner took the catch.
Australia were soon back on top as Lyon bowled one that took a sharp turn, forcing Shakib to hand a catch to Steve Smith at first slip. Shakib struck 11 fours in his 113-ball innings.
Shakib’s scalp saw Lyon equal Richie Benaud’s Test haul of 248 wickets, the second best figure for an Australian spinner after Shane Warne.
Mushfiqur Rahim saw off the session and was batting on 12 with Nasir Hossain who has yet to score.
Bangladesh, playing Australia in a Test for the first time in a decade, suffered an early setback as Cummins unleashed a fierce spell of fast bowling.
Cummins struck in his first over when he dismissed Soumya Sarkar for eight, beating the left-hander with a short-pitched ball that took an edge and flew to Peter Handscomb at gully.
In his next over he removed Imrul Kayes and Sabbir Rahman for nought off successive deliveries to reduce Bangladesh to 10 for 3.
Imrul attempted a drive without moving his feet and got an inside edge that was taken comfortably by wicketkeeper Mathew Wade.
The next ball swung late to find a thick edge of Sabbir’s bat, with the decision upheld after a futile review of the on-field decision by umpire Aleem Dar.
Tamim lofted Nathan Lyon for a six over extra cover, growing in confidence as he built a solid partnership with Shakib.
Download our app and read this and other great stories on the move. Available for Android and iOS.