Prasanna Jayawarde's patient century lifted Sri Lanka to 400 all out and England lost their captain Andrew Strauss to end the second day of the first Test on 47 for one on Friday.
Strauss was caught at by Mahela Jayawardene at second slip off Suranga Lakmal for 20 in the day's final over, leaving Alastair Cook 24 not out and nightwatchman James Anderson on one.
It was a late blow for the home team as they replied to Sri Lanka's imposing total built round an innings of 112 by wicketkeeper Jayawardene who came to the crease with his team in potential trouble at 159 for four.
Sri Lanka opted to use him at number six for the first time having chosen five bowlers and he responded with a confident innings spanning more than four hours and including 12 fours.
The world No 3-ranked bowler Anderson completed figures of three for 66 but bowled just one over after tea before going off the field for treatment on a stiff back. Off spinner Graeme Swann claimed three for 78.
England's bowlers toiled for much of the day as opener Tharanga Paranavitana took his overnight score to 66 and Thilan Samaraweera chipped in with 58.
Mahela Jayawardene failed to add to his overnight score of four but his namesake Prasanna looked comfortable, offering just one chance on 89 to Strauss at slip off Swann.
England's bowlers struggled on the flat pitch, though Anderson started well by having Mahela Jayawardene caught by Strauss at first slip.
That was 133 for three and left-hander Paranavitana played on to Chris Tremlett to make it 159 for four before Prasanna and Samaraweera added 84 for the fifth wicket.
Anderson struck again by removing Samaraweera with a perfect out-swinger that was caught by Swann at second slip and Farveez Maharoof was run out at the non-striker's end by the fingertips of bowler Jonathan Trott to make it 278 for six.
Jayawardene added another vital 68 runs with Thisara Perera (25) before Perera was caught at mid-on and became Stuart Broad's 100th Test victim. The 24-year-old was the second-youngest Englishman to reach the milestone, after Ian Botham.
England are looking to build on their recent Ashes success as they bid to become the top-ranked Test nation and the Sri Lankans are seeking a first Test win in six matches.