Captain Mahela Jayawardene hit a fighting 168 not out to rescue Sri Lanka from trouble and lead it to 289 for eight wickets at stumps on the opening day of the first cricket test against England on Monday.
He hit 20 boundaries and three sixes in 289 balls in what is his 30th test century after Sri Lanka had slumped to 15-3 by the fourth over at Galle International Stadium.
Jayawardene, who has now scored 150 runs in an innings 13 times, was part of moderate but useful partnerships with Thilan Samaraweera, Dinesh Chandimal, Prasanna Jayawardene and Rangana Herath.
Jayawardene was lucky to be dropped three times, two of those by Monty Panesar.
"We obviously started poorly," Sri Lanka coach Graham Ford said. "I think the fight all the way through from 15 for three was really, really pleasing."
Ford said the pitch wasn't difficult but scoring runs freely was impossible because of its slowness, ensuring the batsmen had to spend more time to find form.
Jayawardene won the toss and elected to bat first but England's bowlers used the early movement on the pitch to rattle the top order.
James Anderson struck in two successive balls in the third over when Thirinamme's drive at an outswinger went to Graeme Swann at slip and he then had Kumar Sangakkara caught behind by Matt Prior.
Anderson finished with figures of 3-56 and now has 252 career test wickets. He later lamented England's failure to capitalize on its good start.
"If you gave us 289 at the start of the day we would have taken it," Anderson said. "We had the momentum when we had them 191 for seven, but just didn't finish them off."
Stuart Broad had Tillakaratne Dilshan caught at slip by captain Andrew Strauss to reduce the home team to 15-3.
Jayawardene and Samaraweera were patient in an attempt to salvage the innings, the team reaching lunch at 66-3.
Samaraweera was run out for 20 with only one run added to the total soon after lunch. Samaraweera had looked composed and was unlucky when a straight drive brushed the bowler's fingers and hit the stumps, catching him short of his crease at the non-striker's end.
Jayawardene and Samaraweera added 52 runs for the fourth wicket.
Left-arm spinner Samit Patel picked up his maiden test wicket on debut when he had Dinesh Chandimal caught by Ian Bell for 27, ending another 61-run stand.
Jayawardene and Herath shared 62 runs for the eighth wicket, the best partnership of the day. Herath's share of the partnership was only five runs.
Patel returned 2-27 off nine overs.