England must make the biggest fourth-innings chase in their history if they are to beat Sri Lanka in the first Test at Galle.
Andrew Strauss' side will resume on the fourth morning on 111 for two as they look to reel in an imposing target of 340.
England have chased down more than 300 on just three occasions, with a best of 332 against Australia in 1928, and they must defy the history books to better that here.
The largest last-innings score at Galle in 19 Tests is just 253, with the best chase a paltry 96.
But after losing both openers to Rangana Herath, Jonathan Trott and Kevin Pietersen put on 63 to raise the prospect of an unlikely success.
Win or lose, England will be disappointed by their failure to pocket Sri Lanka's last two wickets earlier in the day, with Prasanna Jayawardene making 61 not out in late stands worth 40 and 47.
The tourists' lowest ebb came when Stuart Broad had Jayawardene caught and bowled with the deficit at 293, only to be retrospectively no-balled.
Sri Lanka began 209 ahead at 84 for five.
Quick wickets and a chase of under 250 was England's aim but they were forced to wait for the breakthrough as Dinesh Chandimal and nightwatchman Suraj Randiv added 30 runs.
After 45 minutes of frustration Chandimal produced an ugly swipe to hand Monty Panesar his first wicket and Randiv's hour-long stay ended when Swann won a marginal lbw verdict.
That sealed Swann's 12th five-wicket haul in Tests and he added the scalp of Rangana Herath, bowled hacking across the line.
At 127 for eight, the end seemed in sight but Jayawardene had other ideas.
With Chanaka Welegedara in support, he teased the lead to 276 at lunch.
The pair added a vital 40 before Panesar found Welegedara's edge and Strauss took a smart catch.
Five balls later came Broad's no-ball nightmare. He thought he had Jayawardene caught and bowled but saw the decision reversed after replays showed he had overstepped.
England debated appealing for the run out but received no encouragement from the umpires.
Jayawardene made good use of his luck, hitting three sixes - including a muscular pull off Broad to go to a potentially match-winning half-century.
The new ball was taken in the 80th over but it took a run out to end the innings at 214.
England appeared shell-shocked as they came off, knowing the task in front of them had increased exponentially in the last hour.
Alastair Cook and Andrew Strauss both got off the mark with trademark cuts for four and reached tea on 27 without loss after seven overs.
Just one of those had been bowled by England's first-innings nemesis Herath, though, and he was quick to make his mark at the start of the evening's play.
Cook was the man out for 14, Herath having his appeal for caught behind confirmed only after calling for DRS.
Off-spinner Tillakaratne Dilshan was brought on at the Fort End and had an lbw shout against Trott turned down - both on the field and on review.
Trott also sent a leading edge just over Herath's head as England's trial by spin began again.
Strauss, for the second time in the match, failed the test.
Having been out sweeping in the first innings, he opted to come down the track to Herath this time but dragged tamely to Dilshan at short mid-wicket.
The skipper's score of 27 continued a worrying recent trend of getting out when seemingly established.
Mahela Jayawardene turned up the heat on Trott and new man Pietersen, giving both Dilshan and Randiv four close catchers on the leg-side. Trott began to find his feet, twice sweeping Herath for four, but Pietersen was ill at ease.
He sprayed a half-chance wide of mid-off on eight and was dropped on 12 after deflecting Randiv to leg slip.
A flurry of boundaries in the last half-hour brought up the 50 partnership and the England 100, with both men doing a good job of controlling conditions.
At stumps Trott was 40no with five fours, while Pietersen had moved to 29no with four boundaries.