London - Jonathan Trott hit 76 and Joe Root made 68 off 55 balls as England piled up 293-7 after being sent in to bat by Sri Lanka in the Champions Trophy at the Oval on Thursday.
Skipper Alastair Cook chipped in with 59 and Ravi Bopara smashed 28 runs from the final over for the hosts, who will advance to the semi-finals of the eight-nation tournament if they win.
Sri Lanka, who will be knocked out of the semi-final race if they lose, grabbed four wickets for five runs towards the end to make it 254-7 in the 48th over.
GALLERY: WAGS of the Champions Trophy
But Bopara boosted the total with three sixes, two boundaries and a two in the 50th over sent down by seamer Shaminda Eranga to return unbeaten on 33 off 13 balls.
Root, the victim of what England cricket authorities said was an "unprovoked physical attack" by Australian batsman David Warner in a Birmingham bar over the weekend, hit five fours.
Cook, dropped twice by the normally agile Tillakaratne Dilshan, put on 48 for the first wicket with Ian Bell and 83 for the second with Trott.
Bell fell for 20, snapped up at mid-wicket off Eranga, before Cook's patient knock ended when the television umpire upheld the leg-before decision off Rangana Herath's bowling.
England, who were 131-2 in the 29th over, picked up their scoring rate when Root arrived at the crease and reached 201-2 at the end of 40 overs.
Trott put on 87 for the third wicket with Root before he became Herath's second leg-before victim, missing an attempted sweep.
England were 249-3 in the 46th over when they lost three wickets at the same total, and another one five runs later, to allow Sri Lanka to bounce back in the match.
Sling-arm fast bowler Lasith Malinga had Root caught on the square-leg fence and trapped Eoin Morgan leg-before off successive balls, before Nuwan Kulasekara removed Joss Buttler for no score.