Half-centuries from Jonny Bairstow and Dawid Malan seemed set to propel England to a huge total but Sri Lanka fought back to restrict their opponents to 180 for six in the final Twenty20.
Jason Roy's absence because of a tight hamstring led to England reshuffling the batting and their makeshift openers Bairstow (51) and Malan (76) put on 105, while the hosts were on 143 for one at the end of the 15th over.
A 200-plus total beckoned but Sri Lanka varied their pace and lengths to frustrate England, who lurched to 162 for six, with Dushmantha Chameera particularly impressive as he collected career-best figures of four for 17.
All four wickets came in the space of 10 balls before England finished with a flourish, taking 17 from the last over, as the world number one ranked side looked for a series clean sweep, following back-to-back wins in Cardiff.
Roy's absence was one of two changes for England, with Mark Wood rested and replaced by Chris Woakes, while Moeen Ali was also given a chance to impress. Sri Lanka won the toss for the third time, but this time Kusal Perera elected to field first.
It was a relatively sedate start from England, with the only memorable moment a shoulder-to-shoulder coming together between Malan and Binura Fernando which left both players on the floor in a quick single attempt.
The aggressor seemed to be Fernando but there were no cross words between the pair, with Malan claiming some sense of revenge by flicking the left-arm seamer off his toes for six in the fourth over.
Isuru Udana had a forgettable introduction, sending down four wides in a 10-ball over, while Bairstow was looking authoritative on the drive with four fours in the powerplay, where England reached 48 without loss.
Sri Lanka were struggling to make much of an impression with the ball and Malan upped the ante with a reverse sweep that beat two diving fielders and an exquisite driver over cover for fours, either side of a sweep for six.
Bairstow farmed the strike for much of the first half of the innings and he had his first six with a pull off Udana, with the ball just about clearing Wanindu Hasaranga on the midwicket boundary.
Bairstow went to a 41-ball fifty with a sumptuous drive through cover for his fifth four while England brought up three figures in the 12th over.
Their openers had laid the foundations to go big in the remainder of the innings before Bairstow was bowled, yorked by Udana for 51, as Sri Lanka made a belated breakthrough.
Malan went to a 30-ball half-century, his 12th 50-plus score in just 27 T20 innings, and clobbered Hasaranga for two towering leg-side sixes in the 15th over which yielded 18 runs, before Liam Livingstone fell for 14 off 10 after toe-ending a low full-toss from Fernando to the cover fielder.
Sam Billings and Eoin Morgan both holed out as Sri Lanka just started to gain a bit of a foothold, with England lurching from 143 for one to 151 for four within the space of 12 balls.
Chameera used his slower balls to excellent effect as Malan (76 off 48 balls) and Moeen (seven) offered catches in the deep.
Back-to-back offside fours from the last two balls from Chris Jordan at least helped England end their innings on a positive note, with Sri Lanka set 181 for a consolation victory in this dead rubber.