LONDON - 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.