Fast bowlers Stuart Broad and Ryan Sidebottom shared five wickets to help England restrict Sri Lanka to a modest 211 in the fifth and final one-day international here.
Broad finished with 3-36 and left-arm seamer Sidebottom with 2-41 as Sri Lanka struggled to score freely on a slow pitch after winning the toss in the day-night match.
Middle-order batsman Chamara Silva top-scored with a fighting 73 for his second successive half-century, but received little support from the other end. He hit nine fours in his 109-ball knock.
England have already gained a winning 3-1 lead in the series.
Sri Lanka were strongly placed at 74-1 before losing their way against England's disciplined pace-spin combination.
Left-arm spinner Monty Panesar, who came in place of the injured Graeme Swann, conceded just 31 runs in his 10 overs while part-time spinner Owais Shah grabbed a vital wicket in the middle overs.
Sri Lanka put on 45 for the opening wicket in only seven overs, with Sanath Jayasuriya hitting two sixes in his 18-ball 26 and debutant Dilruwan Perera playing some attractive shots in his 41-ball 30.
But Sidebottom ended Sri Lanka's early flourish with two wickets in an over, removing Perera and then skipper Mahela Jayawardene for a duck.
Kumar Sangakkara (26) also failed to capitalise on the start. He looked like steadying the innings with Silva before off-spinner Shah struck.
Sangakkara stood at the wicket even after being bowled round the legs as South African umpire Rudi Koertzen, apparently unsighted by the bowler, had initially called it a wide ball.
The batsman had to leave when third-umpire Gamini Silva ruled after watching the TV replays that the ball hit the leg-stump.
Silva, who scored 67 in the previous game, kept one end intact before becoming the ninth man out in the 47th over, caught by James Anderson at third-man off Broad.