Andrew Strauss and Jonathan Trott compiled chanceless centuries on day two of England's pre-Test warm-up but Ian Bell's struggles continued on a flat pitch in Colombo.
Responding to the Sri Lankan Development XI's 431 for six, the England openers shared a stand worth 197, both retiring upon reaching three figures to allow others some time at the crease.
But Bell, who had a woeful time against Pakistan and lasted just two balls in his previous innings on tour, fell tamely for 14 to leave him well short of runs ahead of next week's first Test.
Strauss declared with his side 159 behind, improving Bell's chances of a second bat on the final day, and the hosts finished on 44 for one.
England were made to field for almost an hour in the morning session, conceding 55 runs before reaching the agreed first-innings maximum of 100 overs.
Angelo Perera was the only man out, upper-cutting Steven Finn to third man for 85.
But the Middlesex seamer did no more or less than Tim Bresnan to push his Test case and England will have been most pleased to see Stuart Broad get another three overs in on his injured ankle.
Trott got the England reply going by nudging his third ball for four and punched Vishwa Fernando for another boundary in the fourth over.
Strauss found his feet with successive fours off Fernando two overs later, but Tharanga Lakshitha was keeping the batsmen honest at the other end.
A confident Strauss pull off Isuru Udana, followed by an inside edge to the fine-leg boundary off the same bowler, kept the total ticking along.
England were having little trouble finding the ropes, with Trott's trademark flick through midwicket and a Strauss drive bringing up a brisk half-century stand.
By lunch the pair had put on 60 without loss.
England continued with positive intent as the afternoon's play got under way. Trott wasted no time in milking four boundaries off the wayward Udana to race past 40 and Strauss greeted the arrival of slow left-armer Sajeera Weerakoon by hoisting his second delivery over long-off for six.
The hosts turned back to strike bowler Lakshitha and Strauss promptly guided his first ball to the long-leg boundary.
Trott won the race to 50, reaching the mark in 62 balls with the first of two consecutive boundaries off Sajeera Weerakoon.
Leg-spinner Kaushal Lokuarachchi was next in to the attack but nothing looked likely to knock England off their stride, with a misfield at point helping Strauss to his half-century.
Lokuarachchi put out a hand as he attempted to catch a Trott rocket over middle stump but the umpire took the brunt of the blow.
That denied him another boundary, but both men were helping themselves to those by now as they eased to 150 in 207 deliveries.
By tea they were 193 without loss and twin hundreds were a formality.
Both batsmen retired promptly upon reaching their landmarks, with each taking 140 deliveries.
That left Kevin Pietersen and Bell to enjoy the conditions.
Yet despite bright starts from both, that plan never materialised.
Bell struck his second ball for six but was on his way for just 14 when he turned Lakshitha to mid-wicket.
After a dire series against Pakistan and a duck in England's previous tour match, it was a soft way to get out.
Pietersen, meanwhile, compiled a breezy 26 - including a six of his own - before he was beaten by the slow left-armer Weerakoon and stumped.
Ravi Bopara and Samit Patel were in a five and six, with both men hoping to do enough to earn a Test spot next week.
But the pair had just 12 apiece when Strauss made his bold declaration at 272 for four.
Broad, who had bowled three overs in the morning, saw his first two balls disappear for four but trapped Malinga Warnapura lbw for his fourth wicket of the match.
After a free-scoring eight overs at the close, the Development XI were 203 ahead.