Sri Lanka weathered a brilliant knock of 121 by Jos Buttler to beat England by seven runs in the fourth One-Day International and take the five-match series to a decider at 2-2.
Kumar Sangakkara top-scored with 112 in a commanding Sri Lanka total of 300 for nine and England struggled in reply until the arrival of Buttler who smashed 121 off 74 balls.
Sri Lanka innings
T Dilshan b Anderson 71
M Perera c Jordan b Gurney 19
K Sangakkara st Buttler b Tredwell 112
D Jayawardene c Anderson b Gurney 7
A Mathews c Anderson b Jordan 30
H Thirimanne c Ballance b Anderson 16
S Priyanjan c Morgan b Gurney 9
K Kulasekara b Jordan 0
S Senanayake c Cook b Gurney 12
B Mendis not out 4
S Malinga not out 0
Total: (9 wickets; 50 overs) 300
Fall of wickets: 1-26, 2-198, 3-217, 4-233, 5-261, 6-279, 7-280, 8-292, 9-296
A Cook lbw b Malinga 1
I Bell c Jayawardene b Malinga 7
G Ballance c Sangakkarra b Mendis 42
J Root c Mendis b Mathews 43
E Morgan Sangakkara b Senanayake 12
R Bopara c Thirimanne b Mendis 51
J Buttler run out 121
C Jordan c Dilshan b Malinga 5
J Tredwell not out 1
J Anderson not out 0
Total: (8 wickets; 50 overs) 293
Fall of wickets: 1-3, 2-10, 3-94, 4-107, 5-111, 6-244, 7-290, 8-292
He fell in the final over bowled by Lasith Malinga and the series will be decided in the fifth and final game at Edgbaston.
Having skittled Sri Lanka out for 67 in the third ODI on Wednesday, England won the toss and elected to bowl as they strove to wrap up the series.
However, the tourists attacked England early and despite losing opener Kusal Perera for 19, Tillakaratne Dilshan and Sangakkara dominated a limp England bowling attack to add 172 for the second wicket.
Dilshan was bowled by James Anderson for 71 attempting his infamous scoop shot, but Sangakkara continued to dispatch the England bowlers with ease, reaching his 19th ODI century from 95 balls.
England's bowlers regroup
Mahela Jayawardene fell for seven and Sangakkara was stumped by Buttler after dancing down the track to spinner James Tredwell.
Sri Lanka lost steady wickets after the dismissal of Sangakkara and Harry Gurney finished with figures of four for 55, but Ajantha Mendis clubbed the last ball of the innings for four to leave England chasing a mammoth total.
England's reply got off to a dismal start when Malinga dismissed captain Alastair Cook (1) and Ian Bell (7) to leave the hosts reeling at 10 for two.
Gary Ballance (42) and Joe Root (43) built a steady partnership before falling in quick succession but Ravi Bopara (51) and Buttler put on 133 to give England a chance.
Buttler was run out in the final over with nine runs required from three balls to send the series into a final-game decider.