Spinners Abdur Razzak and Taijul Islam bagged four wickets each to help Bangladesh bundle Sri Lanka out for 222, but the Tigers also lost four wickets in the final session of the first day of Dhaka Test on Thursday.
Questions will be raised the way the top-order gave away their wickets, bigger than the Sri Lankan bowlers' credit was the home batsmen's folly at the Sher-e-Bangla National Stadium.
Opener Tamim Iqbal hit a four off the innings' second ball, only to give a return catch to Suranga Lakmal in the next delivery.
One-down Mominul Haque, who hit centuries in both innings of the last game, then had to return to the pavillion for a zero without even facing a ball, as he fell victim to a run out for not putting the bat inside the crease in an act of lethargy.
Mushfiqur Rahim then let a Lakmal delivery hit his off-stump, despite seeing himself luckily survive twice in that same over.
Opener Imrul Kayes was trying to put some resistance, but he was trapped leg before the wicket near the close of the day to make things worse for the hosts.
At end of the day, Bangladesh had 56 for 4, with Liton Das on 24 and Mehidy Hasan Miraz on 5.
Winning the toss, visiting skipper Dinesh Chandimal had opted to bat first.
Abrur Razzak, playing his first Test in four years, gave the hosts a breakthrough when he got Dimuth Karunaratne stumped in the sixth over thanks to some good works from Liton Das.
Dhananjaya de Silva, who hit a ton in the last match, was the next to go, as Taijul made him give a catch to Sabbir Rahman, with the score on 61. The batsman made 19.
Razzak then struck twice in two balls, first Danushka Gunathilaka lofted a catch to Mushfiqur Rahim and then Chandimal was baffled by a beautiful delivery that hit the wicket.
Sri Lanka went to lunch with 105 for 4, but Razzak put an end to Kusal Mendis' heroic innings in the second ball of the second session to wrestle the game towards the home side again.
Mendis hit 68 with 10 fours and a six to save the Lankans from a bigger disaster. Taijul then rejoined the party, bowling Niroshan Dickwella and the hosts strengthened their grip on the match.
Roshen Silva, who also hit a century in the first Test, then fought bravely against the Bangladesh bowlers, and it was his 56 off 124 balls that made sure the visitors go past 200.
Dilruwan Perera added 31 while Akila Dananjaya scored 20 more valuable runs to give Roshen some support.
Speedster Mustafizur Rahman grabbed two wickets late on to give the spinners the perfect support on a pitch that had little for the batsmen.