Sri Lanka resisted England's charge for most of day four of the second and final Test in Colombo but two late wickets from Graeme Swann left them clinging on heading into the final day.
Swann bowled Thilan Samaraweera (47) and Suraj Randiv (0) in the penultimate over before Sri Lanka reache 218 for six at stumps six balls later - just 33 runs ahead.
Mahela Jayawardene played another fine innings and was unbeaten on 55, once again playing the anchor role for his side.
England missed a few chances in the field but were able to take four wickets before Jayawardene and Samaraweera managed to add 90 for the fifth wicket.
Lahiru Thirimanne was the first man to depart when he drove at James Anderson and edged to Andrew Strauss at slip for 11.
Dhammika Prasad, who did his job as a nightwatchman on day three, went on to make 34 in 59 balls before he pulled Steven Finn to Tim Bresnan.
Swann (4-82) then came into his own as he had Tillakaratne caught behind by Anderson for 34 and Kumar Sangakkara caught by wicket-keeper Matthew Prior for 21.
Jayawardene and Samaraweera then dug deep, the former facing 157 balls and the latter 139 deliveries and they looked set to steer Sri Lanka towards safety until Swann returned with just 12 balls to go in the day.
After Anderson and Finn had delivered a testing but ultimately fruitless spell with the new ball, Swann got one to grip and turn and as Samaraweera tried to defend while backing away to leg, the ball rolled off the face of his bat, bounced and clipped his leg bail.
Randiv's dismissal was more conventional as Swann got one to turn through a gaping gap between bat and pad and crash into his stumps.
Angelo Mathews survived nine balls, making three when the day ended.
Jayawardene (104) hit a century in Sri Lanka's first innings of 275 before Kevin Pietersen hammered 151 to put England in charge as they were bowled out for 460 in reply.
Sri Lanka lead the series 1-0 after a 75-run win in Galle.
© Cricket World 2012
© Cricket World 2012
Open an account with bet365 today and qualify for up to £200 in free bets with our fantastic 100% Deposit Bonus.