Kumar Sangakkara who reached his 23rd ODI hundred off 70 delivers for his fastest hundred, was man-of-the match.
Lahiru Thirimanne too, scored an unbeaten century, becoming the youngest Lankan batsman to score a WC hundred at 25 years and 174 days.
He scored the winning runs with a six.
Scores
England 309/6 in 50 overs
Joe Root 121, Ian Bell 49
Sri Lanka 312/1 off 47.2 overs
T.M. Dilshan 44, Kumar Sangakkara 117 not out, Lahiru Thirimannne 139 not out