Angelo Mathews and Dhananjaya de Silva each hit a fifty and put on a 102-run partnership to keep Sri Lanka going strong in the rain-hit second Test against Bangladesh on Wednesday.
Mathews remained unbeaten on 58 after de Silva went out with the same score to take Sri Lanka to 282-5 at stumps on the third day, still trailing Bangladesh by 83 runs.
Rain washed out entire post-lunch session but the duo stepped up their scoring rate to make up for lost time, with de Silva striking nine fours before Shakib Al Hasan got his wicket.
The right-hander, who faced 95 balls, was initially given not out on a caught-behind appeal before Bangladesh successfully reviewed.
Mathews, who smashed four fours and a six, was batting with Dinesh Chandimal on 10 at stumps.
Bangladesh made early inroads after Sri Lanka resumed on 143-2, Ebadot Hossain bowling nightwatchman Kasun Rajitha for a duck with the second ball of the day.
A gem of a delivery from Shakib dismissed Dimuth Karunaratne for 80 soon afterwards, with the Sri Lankan skipper adding 10 to his overnight score. Shakib tossed the ball up on off-stump and Karunatne went for a drive but saw the flighted delivery dip and turn between bat and pad before crashing into his stumps.
Karunaratne, who was dropped on 37, struck nine boundaries in his 15th Test fifty.
De Silva hit Ebadot for three fours in one over just before the break after he and Mathews survived a difficult spell from the right-arm pace bowler and Shakib.
Shakib, the most successful bowler for Bangladesh so far, has claimed 3-59.