Left-arm spinner Shakib Al Hasan claimed three wickets as Bangladesh left Sri Lanka stuttering at 172 for six before bad light stopped play early on the opening day of the first Test on Friday.
Shakib added Tillakaratne Dilshan to his tally in the final session after scalping Kumar Sangakkara and Mahela Jayawardene before tea to return with three for 43, while Shahadat Hossain chipped in with 2-47.
Sangakkara scored 43 runs before he was caught at midwicket by Mohammad Ashraful ending a 95-run stand with Michael Vandort.
Sri Lanka added two more runs before Shahadat removed Vandort for 44, the opener caught by Shakib after he had mistimed a pull shot.
Shakib then bowled Mahela Jayawardene for three as a trio of Sri Lankan wickets fell for just 16 runs.
The visitors had resumed after lunch on 27-1 with opener Malinda Warnapura the only casualty of the fog-delayed morning session at the Sher-e-Bangla National Stadium.
Warnapura was trapped lbw by pace bowler Mashrafe Mortaza for 14 shortly after Bangladesh wicketkeeper Mushfiqur Rahim was injured when he dropped the opener off the same bowler.
Rahim bruised his forehead attempting the catch and left the ground immediately with Zunaed Siddique taking his place behind the stumps.
He returned to the field after lunch and missed another difficult chance, this time offered by Sangakkara off pacer Mahbubul Alam when the batsman was on 11.
Sri Lanka won the toss and opted to bat after thick fog delayed the start of the match by one hour and 45 minutes.
Sri Lanka first innings
M. Vandort c Shakib b Shahadat 44
M. Warnapura lbw Mortaza 14
K. Sangakkara c Ashraful b Shakib 43
M. Jayawardene b Shakib 3
T. Samaraweera not out 20
T. Dilshan b Shakib 14
P. Jayawardene c Tamim b Shahadat 6
C. Vaas not out 0
Extras (b-4 lb-7 nb-6 w-11) 28
Total (for six wickets, 57.4 overs) 172
Fall of wickets: 1-24 2-119 3-121 4-135 5-155 6-171
To Bat: D. Prasad, M. Muralitharan, R. Herath
Mortaza 13-1-48-1 (nb-5, w-10), Alam 13-4-23-0, Shahadat 13.4-2-47-2 (nb-1, w-1), Shakib 18-3-43-3