After putting the visitors in to bat, Sri Lanka showed some spark upfront, but ultimately didn't put enough on the board before England's powerful batting lineup chased the total down with 47 balls to spare.
Openers Pathum Nissanka and Lahiru Udara put together Sri Lanka's best period of the series so far. They put Jofra Archer to the sword, carving several boundaries. And when Will Jacks was introduced at first change, they smashed him all over the park for 17 runs.
Sri Lanka were sitting pretty on 55/0 after 5.2 overs when Liam Dawson got two-in-two. Udara picked out mid-on, then Kamil Mishara chipped one back to the bowler for a first-ball duck. And when Nissanka - playing his first innings of substance since wrist surgery - fell for 37 from 21, the wheels came off. Sri Lanka limped to 145 as Dawson finished with 3/32.
In the chase, Jos Buttler continued his red-hot form and was supported by Welshman Aneurin Donald, as the pair blasted 51 off the first 27 balls. Donald struck one straight to mid-off next ball, then Buttler (30 from 16 balls) skyed one into the Cardiff night the next over.
Captain Harry Brook - fresh off his career best 114 not out earlier in the week - showed he was there for a good time, not a long time as he launched three sixes and a four in his eight deliveries before Eshan Malinga pulled off a superb catch at square-leg.
Tom Banton was chief destroyer for the rest of the innings. The middle-order batter bashed an unbeaten 52 from 24 to guide England to a series win.
The third and final T20I takes place in Manchester on Saturday.