London: England captain Alastair Cook's career-best century kept Sri Lanka at bay in the third one-day international (ODI) at Lord's on Sunday.

But with no other England batsman making more than Kevin Pietersen's 41, the hosts were still held to 246 for seven.

England's total would have been considerably worse had not Cook been reprieved on 15 when Mahela Jayawardene dropped a regulation slip catch.

As it was Cook, also dropped by Thilina Kandamby at third man on 103, went on to make 119.

He shared stands of 72, with Ian Bell (30), and 75, with Tim Bresnan (26) for the fifth and sixth wickets respectively after England had collapsed to 85 for four.

Cook was on course to become only the second batsman, after fellow England left-handed opener Nick Knight, to bat through a full 50-over ODI innings when he was run out attempting a bye by Sri Lanka wicketkeeper Kumar Sangakkara.

In all he faced 143 balls with 13 fours -- not the most rapid run-rate but hugely valuable in the context of the match.

This was only Cook's second century in 29 ODI innings and his highest, surpassing the 102 made against India at Southampton in 2007.

The 26-year-old who in Sri Lanka's 69-run series levelling win at Headingley on Friday won the toss and fielded because England would "quite fancy chasing" only to see the tourists pile up 309, opted to bat first at Lord's.

Cook, belying his reputation as a slow scorer, forced Angelo Mathews off the backfoot for four in the first over.

It was the only over Mathews, struggling with a knee injury, bowled.

Cook should have been out when he edged Nuwan Kulasekara only for the normally reliable Jayawardene to drop the two-handed chance.

Pietersen, looking in excellent touch, dominated a third wicket stand of 49, of which Cook's share was just seven, before leg-spinner Jeevan Mendis checked England's recovery with two wickets.

First he induced Pietersen, who faced just 43 balls, to sky a sweep to deep square leg where Suraj Randiv held a well-judged catch and Mendis then had left-hander Eoin Morgan lbw for four.