The hosts declared their first innings on 387-9 in the first session and were quickly among the wickets, reducing the visitors to 77-3.

Seamer Nuwan Kulasekara trapped opener Adrian Barath (3) lbw with the score on seven.

In-form Chris Gayle fell cheaply to debutant seam bowler Suranga Lakmal after a promising 30 including seven boundaries. Gayle, who made a career-best 333 in the previous Test in Galle, was lured into a hook shot and was caught at deep square leg by Angelo Mathews.

Shivnarine Chanderpaul was out for eight, trapped lbw by spinner Ajantha Mendis.

Darren Bravo, who also scored a half-century in the previous Test in Galle, and Brendan Nash combined for an 83-run partnership but both batsmen got out in what turned out to be the penultimate over of the day's play with clear signs of an early close.

Dilshan trapped Nash lbw for 29 in his second over and Rangana Herath took a brilliant diving catch to dismiss Darren Bravo, who hit five boundaries and four sixes.

Dwayne Bravo (1) and Carlton Baugh (4) were batting when bad light stopped play.

Dilshan finished the day with two wickets for four runs in two overs.

Sri Lanka resumed day three on 294-5 and Sangakkara was dismissed for 150 before declaring the innings closed.

Pace bowler Kemar Roach returned 5-100, his second five-wicket haul for the West Indies.

Sri Lankan captain Kumar Sangakkara praised his bowlers for giving him quick wickets.

"We wanted a wicket from the new ball and they gave us two, Kulasekara and Lakmal," he said. "Especially taking out Gayle was a huge blow to the West Indies and put us on top. Dilshan's got that little magic touch, when he comes on he just manages to do something." However Sangakkara rued his side not reaching 400.

"I thought today it was a bit careless of me to get out ... it's nice to get a hundred, a big hundred but its nice to have gone on and set us on for a bigger total," he said.

West Indies coach Ottis Gibson said Darren Bravo's inexperience showed in his dismissal.

"Darren played fantastically well for us and then a mistake in the end cost his wicket," Gibson said. "He is only a young man in terms of international cricket and this is only his second game, he's got a lot to learn."