Sri Lanka skittled out England for 99 - its sixth-lowest total in one-day internationals - to cruise to a 157-run win in Durham on Sunday and tie the five-match series at 1-1. (Scorecard)
Replying to Sri Lanka's 256-8 that was inspired by opener Tillakaratne Dilshan's 88, England was reduced to 29-4 after some brilliant pace bowling from Nuwan Kulasekara (3-15) before spinner Sachithra Senanayake (4-13) ran through the tail.
Helped by Eoin Morgan's 40, England just avoided its lowest ODI total of 86, against Australia in 2001, but that was the only thing the team can take from a dreadful display at Chester-le-Street.
"I can't explain it," said Morgan, who was England's captain for the match with Alastair Cook out with a right groin strain. "We underperformed massively."
A target of 257 looked competitive but nothing more for the tourists, who were beaten convincingly in the first ODI at The Oval on Thursday.
Dilshan fell just short of his 18th ODI century after being bowled through the gate by Chris Jordan to end his patient 101-ball knock, while Kumar Sangakkara (40) and a late flurry from Ashan Priyanjan (43) pushed Sri Lanka past the 250 - considered a par score here.
Kulasekara removed the top three batsmen Michael Carberry (10), Ian Bell (12) and Gary Ballance (5), with Lasith Malinga getting a delivery to nip back off the seam and bowl Joe Root for a duck.
The runs dried up and Morgan was the only England batsman to handle the spin wizardry of Senanayake as the hosts inched toward triple figures.
A reverse sweep by James Anderson took England past its lowest ODI score but the end came moments later when he was bowled by Senanayake.
"We were not sure about our score - we thought it was about par - but the bowlers were excellent again and took early wickets," Sri Lanka captain Angelo Mathews said. "It was cold and it was seaming a lot - Nuwan Kulasekara is unplayable in these conditions."
The third match takes place in Manchester on Wednesday.