Mahela Jayawardene's highest score in one-day internationals set Sri Lanka on their way to a 69-run victory as the tourists levelled the five-match series against England at one win apiece.
Jayawardene hit 144 in 150 balls with no hint of savagery as Sri Lanka, put in by Alastair Cook, made 309-5.
On a wonderful wicket for batting at sunny Headingley, England nevertheless struggled during the chase.
Eoin Morgan top-scored with 52 from 40 balls in a total of 240 all out.
The final wicket fell with 25 balls remaining, and the series moves to Lord's on Sunday where England will have to improve markedly.
Though the most obvious difference between the two sides was Jayawardene's delightful century, his 15th in ODIs, Sri Lanka's fielding was excellent throughout while England's was woefully shoddy.
As expected, the hosts named a line-up unchanged from the team that had coasted to victory in the rain-affected series opener at The Oval.
“This performance again raises questions about England's batting order, while Sri Lanka also had more variety to call on from the bowlers”
Test Match Special's Vic Marks
With Sanath Jayasuriya having played his last game, Jayawardene was promoted to open the batting with Tillakaratne Dilshan, while youngster Dinesh Chandimal took the vacant batting slot at number three.
England began with some accurate bowling, but the first two wickets came about as a result of sharp fielding and terrible judgement from Sri Lanka's batsmen.
The direct hits from Stuart Broad and James Anderson - running out Dilshan and Chandimal respectively - did not reflect England's general performance in the field.
Jayawardene was critically dropped at slip by Graeme Swann when on seven, while Cook spilt a much tougher chance when he had already reached his century.
Swann then dropped a second catch in the closing overs at short fine-leg, palming the ball away for four.
There were overthrows and basic errors as well, while the bowling, with the exception of Swann and James Anderson, was also poor, with too many wides and full tosses.
Jayawardene and by Kumar Sangakkarra (69) put on 159 in 29 overs before Swann hit back when Sangakkara was stumped from a ball that turned sharply.
Sri Lanka stepped up the scoring in the final overs, with 59 runs coming in the five-over batting powerplay and some muscular strikes from Angelo Mathews (46 not out from 30 balls) ensuring England would need more than a run a ball from the very start.
Cook and Craig Kieswetter started brightly before both were caught in the deep - Cook's 48 from 52 balls emphasising that he has the ability to score at a decent rate in this format - but Jonathan Trott began slowly and Kevin Pietersen was nicely caught by Lasith Malinga in the deep for only 13.
When Trott was bowled by a perfect inswinging yorker from Suranga Lakmal for 39, Morgan played beautifully until he was stumped off Suraj Randiv.
Two more wickets quickly fell, leaving Bell, again looking ill-suited to the number six slot, to try to pull the game out of the fire. But he swept meekly to short fine-leg and it all ended when Jade Dernbach holed out to long-off.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.