Gary Ballance hit an unbeaten 104 for his first Test century as England fought back to finish the fourth day on 8-267 and lead Sri Lanka by 389 runs at Lord’s.
With one day left of the first Test, the Sri Lankans will have to pass the highest successful run chase at Lord’s of 344, achieved by the West Indies in 1984.
An overnight declaration from England looks highly likely, as it will seek to take 10 wickets in the final day.
When Matt Prior was caught by Kumar Sangakkara at gully off the bowling of Nuwan Kulasekara, the hosts were struggling on 6-121, but Ballance and Chris Jordan put on a valuable partnership of 78 for the seventh wicket.
It was a stand that turned the Test back in England’s favour, according to Sri Lanka captain Angelo Mathews. England had gone to tea on 5-117.
“Until Ballance and Jordan got together we had a chance (of winning),” Mathews said.
“We need to bat sensibly because they have got a healthy lead. The wicket is playing up and down, so we will assess the conditions first tomorrow and see how it goes.”
Jordan was dismissed by Rangana Herath for 35 with England on 199 and Stuart Broad made a quick contribution of 24 from 18 balls.
Ballance brought up his century by smashing Herath for a six over midwicket, something which was out of keeping with the patient nature of his innings as he guided England away from trouble.
The 36-year-old Herath was Sri Lanka’s leading wicket taker after finding some turn in the wicket and finished the day with figures of 4-95.
Shaminda Eranga, who dismantled England’s upper batting order by removing Alistair Cook (28), Sam Robson (19) and Ian Bell (9) for figures of 3-63, also found some movement.
It will encourage England’s bowlers going into the final day.