Sri Lanka strengthened their position in the one-day series against England after easing to a six-wicket win in Colombo.
In the absence of captain Alastair Cook, James Taylor's 90 illuminated the tourists' sub-par total of 265 in their 50 overs.
Despite Tillakaratne Dilshan and Kusal Perera's early dismissals Kuma Sangakkara made 86 and captain Angelo Mathews scored an unbeaten 51 to ease the hosts into a 3-1 lead in the series with three matches remaining.
Stand-in England captain Eoin Morgan said: "We were good in patches, Taylor played outstandingly well. But in patches we weren't at the races. It's nice to get some runs under my belt, it will lift my confidence.
"If we'd got Mahela or Sanga earlier it would have opened up the middle order and given us a chance. It probably would have been nice to have another spinner."