Angelo Mathews ground out a century for Sri Lanka as England's bowlers battled hard on the first day of the second Test in Galle.
The hosts were 7-2 when James Anderson claimed two early wickets, and 76-3 when the seamer struck after lunch.
But, on a flat pitch in gruelling heat, Mathews hit a measured 107 not out as Sri Lanka closed on 229-4.
Mathews put on 117 with captain Dinesh Chandimal, who made 52 before being trapped lbw by Mark Wood.
Niroshan Dickwella finished the day 19 not out with Sri Lanka in a position from which they will believe they can post a telling first-innings score.
However, England limited the scoring on a pitch offering little movement for their fast bowlers or turn for the spinners.
Anderson, brought into the team in place of Stuart Broad in England's only change from their first-Test victory at the same venue, ended the day with exemplary figures of 19-10-24-3.
Quick wickets on day two would leave England in charge as they bid for a victory that would see them take the two-Test series 2-0.