An imperious century from Sri Lanka captain Mahela Jayawardene frustrated England on a finely-balanced opening day of the first Test in Galle.
James Anderson had earlier become the sixth Englishman to take 250 Test wickets as the hosts slipped to 67 for four, but captain Jayawardene's 30th hundred led his side to 289 for eight at stumps.
His knock of 168 not out contained 20 fours and three sixes but he should have been gone by the close, Anderson putting him down on 90 and Monty Panesar adding two woeful drops in the closing stages.
Samit Patel performed admirably after being handed a debut ahead of Ravi Bopara, taking two wickets with his steady left-arm spin, but Jayawardene's heroics sapped England's morale in the final session.
With many local fans priced out of attending, the Barmy Army dominated the ground - although those unwilling to pay for hugely inflated tickets were able to watch from the picturesque fort overlooking the stadium.
England would surely have batted first had Andrew Strauss won the toss but their opening bowlers were quick to banish such thoughts.
Anderson had an lbw appeal against Lahiru Thirimanne rejected from the sixth ball of the day - a decision England wastefully reviewed - and then had him caught at second slip in the third over.
That wicket brought up Anderson's landmark and he celebrated in stunning fashion by removing key man Kumar Sangakkara for a golden duck with his next ball.
Sangakkara fenced at one he could have left, feeding wicketkeeper Matt Prior the simplest of catches.
By the time Tillakaratne Dilshan (11) nicked Stuart Broad to first slip, te score was 15 for three.
But Jayawardene and Thilan Samaraweera proved more difficult to tempt.
Jayawardene looked immediately at ease, hitting cleanly through the off-side, while Samaraweera was rigid in defence.
He took 31 balls to get off the mark as Panesar sent down four maidens in his first five overs.
Graeme Swann, on the other hand, saw his third ball launched for six by Jayawardene.
Broad found Jayawardene's edge having returned for a second spell but the ball grounded just in front of Swann, who used England's second review on an unsuccessful lbw shout.
Sri Lanka inched to 66 for three at lunch but a slice of luck allowed England to strike early in the afternoon session.
Anderson got a fingertip to Jayawardene's straight drive, doing enough to part the stumps and leave Samaraweera run out for 20 at the non-striker's end.
Jayawardene was unperturbed and promptly collected three boundaries off Anderson's next over.
New man Dinesh Chandimal, in his first home Test, got off the mark with a flat six off Panesar and clubbed a second maximum off Patel.
The debutant got his own back when Chandimal fell for 27, mis-hitting an ugly swipe to Ian Bell at cover for Patel's first Test scalp.
All the while Jayawardene was progressing serenely, passing 50 with a punchy drive off Panesar.
Prasanna Jayawardene joined his namesake at the crease but, after starting with some positive shots off Swann, became Anderson's third victim five balls after tea.
The seamer won a borderline lbw to leave the hosts six down for 170 and Strauss produced a superb pick up and throw to run out Suraj Randiv for 12.
Jayawardene offered a first real chance on 90 when Anderson failed to grasp a return catch.
He did not waste his life, flaying the seamer's next attempt for six and paddling Swann for four to bring up his century in 200 balls.
Jayawardene's accumulation against the slow bowlers was exemplary and, with number nine Rangana Herath offering solid support, he did not take any undue risks.
That changed after Patel pinned Herath lbw, Jayawardene first lifting just wide of mid-on and then taking on an Anderson bouncer with the new ball.
The shot sailed straight to Panesar at fine leg, only for his fielding demons to return as he made a ham-fisted attempt at the catch.
The resulting boundary brought up Jayawardene's 150.
England's worst nightmares then came true as Jayawardene hoisted a steepler to mid-off, where Panesar was again waiting.
He steadied himself as the ball fell and duly juggled it to the floor.
England would have taken a total of 289 for eight at the start of play, but they will know they were set for much better.