Skipper Andrew Strauss was unbeaten on 14 and Alastair Cook was on 13 on a dry pitch at the Galle International Stadium that is making batting progressively difficult.
England, the world's top-ranked Test team, will have to defy history if they are to win the match and take the lead in the two-Test series.
The highest fourth-innings total at Galle is 253, made by Sri Lanka in a losing cause against Australia last year. The highest successful fourth-innings chase was Sri Lanka's 96-0 against India in 2010.
Earlier, Sri Lanka were bowled out for 214 in their second innings in the post-lunch session with England off-spinner Graeme Swann finishing with six for 82.
The hosts had been reduced to 127-8 just before lunch, a lead of 252 runs, when wicket-keeper Prasanna Jayawardene stepped in to hit an unbeaten 61 in the company of tailenders.
Jayawardene, who was caught off a Stuart Broad no-ball when on 29, put on 40 for the ninth wicket with Chanaka Welegedara (13) and 47 for the 10th with Suranga Lakmal (13).
Swann bagged two of the three wickets that fell in the morning session after Sri Lanka resumed at Tuesday's score of 84-5.
The overnight pair of Dinesh Chandimal and Suraj Randiv took their sixth-wicket partnership to 42, before both batsmen fell in the space of one run.
Chandimal, who made 31, gifted his wicket for the second time in the match when he attempted a big shot off Monty Panesar and only managed to sky a catch to Kevin Pietersen at mid-off.
Randiv was declared leg-before by TV official Bruce Oxenford after he challenged on-field umpire Asad Rauf's decision, giving Swann his fifth wicket in the innings.
Rangana Herath became Swann's sixth victim when he was bowled trying to sweep the off-spinner