Little-known Graeme Swann put in a superb all-round performance to help England pull off a tense two-wicket win over Sri Lanka in the third one-day international here on Sunday.

The off-spinner grabbed four wickets in a disciplined spell and then made a crucial 25 as England achieved the revised target of 164 in a game reduced to 48 overs a side due to rain to gain a 2-1 lead in the five-match series.

England were tottering at 107-7 on a difficult pitch before Swann added 40 for the eighth wicket with Stuart Broad (20 not out) to help his side win with seven balls to spare.

Swann, playing only his fourth one-dayer since making his debut in 2000, was named man of the match.

"Credit goes to all the boys. It was a big challenge batting under lights after losing the toss," said England captain Paul Collingwood.

"Broad has already scored vital runs for us and Swann showed a cool head. But we haven't won the series yet," he added.

Paceman Farveez Maharoof grabbed three early wickets and veteran left-arm spinner Sanath Jayasuriya took two wickets to raise Sri Lanka's hopes of victory, but Swann held his nerve under pressure on a slow pitch.

Maharoof threatened to upstage fine efforts from Swann (4-34) and left-arm seamer Ryan Sidebottom (3-19) when he wrecked England's top order by removing Kevin Pietersen, Ian Bell and Phil Mustard in his lively opening spell.

Jayasuriya then dismissed Collingwood (32) and Owais Shah (19) just when the pair looked like restoring England's fortunes with a 47-run stand for the fifth wicket.

But Swann dashed Sri Lanka's hopes in a vital stand with Broad, who finished the match with a four and a two off fast bowler Lasith Malinga. Broad had earlier taken two wickets.

"We made a lot of mistakes while batting. We did not even bat our full quota of 48 overs. I am disappointed with the way we batted in the last two matches," said Sri Lanka captain Mahela Jayawardene.

"I think a total of 200-225 would have been good. Only (Tillakaratne) Dilshan batted really well under pressure. We have to make sure we don't repeat our mistakes in the remaining two games."

Dilshan was the only Sri Lankan to defy the England attack as he top-scored with a gutsy 70, just one day after being dropped from the squad for next month's tour of Australia.

He hit six fours in his 84-ball knock for his first half-century in 15 matches.

Swann earlier built on the efforts of Sidebottom and paceman Broad (2-26) to restrict the hosts to a modest total.

Sidebottom and Broad jolted Sri Lanka with four early wickets before Swann kept pressure in the middle overs.

Sri Lanka struggled to score freely against England's pace-spin combination after electing to bat. They lost openers Upul Tharanga and Jayasuriya in Sidebottom's opening spell before Broad struck in quick succession.

Broad took a wicket with his first delivery when he had Jayawardene (two) caught by Collingwood at point and then had Kumar Sangakkara (nine) caught behind.

Sangakkara "walked" even though wicket-keeper Mustard and the bowler initially had not appealed.

England's lead could prove to be decisive as rain threatens to play spoilsport at Colombo, venue for the next two matches on Wednesday and Saturday.