Colombo: Seamer Mustafizur Rahman and spinner Shakib Al Hasan picked up three wickets apiece to help Bangladesh reduce Sri Lanka to 268-8 in their second innings for a lead of 139 on the fourth day of the second test on Saturday.
The hosts, who conceded a first-innings lead of 129, appeared to be in big trouble in their second essay despite opener Dimuth Karunaratne's fine 126, his fifth test hundred.
Sri Lanka were reduced to 190-6 at one point but fought back with useful partnerships from the lower order to boost their hopes of a 2-0 win in the two-match series.
Dilruwan Perera was unbeaten on 26 with Suranga Lakmal 16 not out and the pair have already added 30 for the ninth wicket to dampen Bangladesh's hopes of a maiden win against Sri Lanka in their 100th test.
Off-spinner Mehedi Hasan struck with his first ball of the day to dismiss Upul Tharanga for 26 and break Sri Lanka's flourishing opening partnership after they had resumed on 54-0.
Karunaratne and Kusal Mendis (36) added 86 for the second wicket as Sri Lanka stayed on course to set Bangladesh a challenging target to chase on the final day.
Mustafizur and Shakib brought Bangladesh back into the match by inducing a mini collapse which saw the hosts reduced from 143-1 to 190-6.
Karunaratne and Perera then added 27 for the seventh wicket before the former became Shakib's (3-61) third scalp of the innings.
Sri Lanka - 338 (Chandimal 138, Mehedi 3-90) and 268 for 8 (Karunaratne 126, Mustafizur 3-52, Shakib 3-61)
Bangladesh - 467 (Shakib 116, Herath 4-82)
Status - Sri Lanka lead by 139 runs