Opener Upul Tharanga struck his maiden Test century as Sri Lanka reached 302 for eight at the close of play on the second day of the second and final Test against Bangladesh on Thursday.
Tharanga was unbeaten on 160 with Lasith Malinga 12 not out as Sri Lanka took a lead of 68 runs after the hosts had notched 234 in their first innings.
Tharanga hit two sixes and 19 fours from 297 deliveries.
The opener helped spark a recovery after Sri Lanka, who resumed on 25 for 2, were reduced to 43 for four after two quick wickets in the opening session from Shahadat Hossein.
Tharanga, who needed 178 balls to reach three figures, then added 124 for the fifth wicket with skipper Mahela Jayawardene, who fell to Mohammad Ashraful one run short of his half-century.
The opener compiled 65 with Tillakaratne Dilshan (33), who was bowled by Mohammad Rafique before Enamul Haque claimed two quick wickets late in the day to give Bangladesh a lift before stumps.
Scorecard
Bangladesh (1st innings): 234
Sri Lanka (1st innings): (Overnight: 25-2)
M. Vandort lbw b Rasel 0
U. Tharanga not out 160
M. Bandara c N. Iqbal b Shahadat Hossain 2
T. Samaraweera c Mashud b Shahadat Hossain 20
K. Sangakkara lbw b Shahadat Hossain 0
M. Jayawardene c Rahim b Ashraful 49
T. Dilshan b Rafique 33
F. Maharoof c Mashud b Haque jnr 7
D. Fernando lbw b Haque jnr 5
L. Malinga not out 12.
Extras: (b-5, lb-3, nb-4, w-2) 14.
Total: (for 8 wickets, 101 overs) 302
Fall of wickets: 1-4, 2-13, 3-43, 4-43, 5-167, 6-232, 7-251, 8-263.
To bat: M. Muralitharan
Bowling: S. Rasel 19 - 8 - 42 - 1 (nb-3 w-2), S. Hossain 20 - 2 - 81 - 3, M. Rafique 32 - 9 - 84 - 1, E. Haque jnr 26 - 3 - 71 - 2 (nb-1), M. Ashraful 4 - 1 - 16 - 1.