Upul Tharanga scored his third Test century Friday as Sri Lanka built up a commanding 429-run lead over Bangladesh during their second innings in the first Test in Galle.
Sri Lanka, who had a 182-run lead after both teams completed their first innings, were 247-5 at tea on the fourth day after some belligerent batting by the hosts who were pressing for quick runs in the rain-affected match.
Tharanga was out for 115 at the end of a 171-ball innings that featured 11 fours and three sixes before he was bowled by off-spinner Mehedi Hasan.
Left-arm spinner Shakib Al Hasan bowled Asela Gunaratne for a duck in the next over and Mehedi dismissed Niroshan Dickwella for 15 to give Bangladesh something to celebrate in another taxing day for the visitors.
Dinesh Chandimal rode his luck after being dropped by Soumya Sarkar at slip on 12 to stay unbeaten on 37, taking Sri Lanka's lead past the 400-run mark with the help of Dilruwan Perera who was 19 not out.
Earlier in the session, Shakib removed Sri Lanka's first innings hero Kusal Mendis who made 19 before hoisting a catch to Taskin Ahmed at square leg boundary. Mendis scored 194 first time round.
Dimuth Karunaratne was the only batsman to be dismissed in the opening session giving a catch to Mahmudullah at square leg off Taskin Ahmed after making 32 runs.
Play began 15 minutes early to make up for some of the lost time after rain washed out almost the entire final session on the third day.
Bangladesh were all out for 312 runs in their first innings, replying to Sri Lanka's total of 494.