England had no effective answer to Kumar Sangakkara's 20th century, in his last one-day international on his home ground, as they slumped to a series defeat.
Sangakkara was badly dropped by Alastair Cook at mid off, on 41 off Ravi Bopara, then proceeded to a virtuoso hundred - in which he shared a second-wicket stand of 153 with Tillakaratne Dilshan (68) at the Pallekele International Stadium.
The consequence, once Sangakkara was done with a run-a-ball 112, was a total of 292 for seven.
Captain Cook had much leeway to make up with the bat, but was gone in the first over to England's old adversary Sachithra Senanayake - and despite some resilience from the in-form Joe Root (55), the tourists were all out 90 runs short to fall 4-2 behind with one match to play.
Wicketkeeper Sangakkara took four catches for good measure, and the bowling honours went to Suranga Lakmal (four for 30) as England left 8.3 overs unused.
For Cook, a sequence of 10 ODI innings without a 50 - and only one in 21 - is an aggravating factor to a fifth successive series defeat under his captaincy, at the start of England's World Cup winter.
Sangakkara has no such problems.
Sri Lanka's all-time great, who will retire from ODIs after the World Cup, was born in nearby Matale and is a hero for a generation in this country of cricket enthusiasts.
He did not disappoint them, first of all passing his fifth successive 50 and then pressing on to three figures.
Sangakkara hit 11 fours and a six en route - and the moment he posted his century, with a routine single into the off-side, his crowd went wild.
He departed in minor anti-climax soon afterwards, carving Chris Jordan to cover, but made his way off with arms aloft acknowledging the adoration.
Mahela Jayawardene had gone early after the hosts chose to bat, mis-hitting Chris Woakes to mid off on his return to the top of the order, and cautious Sri Lanka were 27 for one after the 10-over powerplay.
England continued to exert some control, only for Cook's fumble to embolden the opposition.
Dilshan holed out at long on, off James Tredwell, just before the batting powerplay. But the promoted Seekkuge Prasanna smashed a manic 20 in 12 balls, including an escape off Steven Finn when Jos Buttler and James Taylor got their wires crossed at short fine-leg.
Prasanna mistimed another slog to be caught at cover off Finn, who also had the dangerous Angelo Mathews edging behind down the leg-side.
But Sangakkara stayed until the 45th over - and with wickets in hand, Sri Lanka took 92 off the last 10.
It was always going to be an unlikely chase, and Senanayake (three for 33) undermined it from the outset in only his second match back after amending his illegal action.
Cook got in a tangle and was lbw to the off-spinner; then Taylor went up the wicket only for the ball to slide past the closed face and dislodge the off bail.
Moeen Ali tried to counter-attack against Dilshan, but was caught-behind off the glove when the off-spinner got one to turn and bounce.
Root and Bopara tried to get England competitive again.
But Lakmal took two in two, Bopara caught-behind despite a lack of definitive evidence as to whether a tumbling Sangakkara had kept the ball off the ground throughout - and then no doubt about the catch which saw off Eoin Morgan for a golden duck, edging another fine delivery.
From 123 for six, after a moment of brilliance in the field from Lahiru Thirimanne ran out Buttler, England's mission was reduced to attempted damage limitation.
So it proved, Woakes' career-best 41 helping Root out, but the game was up for good once the Yorkshireman was bowled attempting an audacious sweep at the pace of Lakmal in powerplay.