England were left to curse an umpiring error and a lamentable fielding performance as Mahela Jayawardene's 51-ball 89 steered Sri Lanka to 189 for four in their World Twenty20 clash.
Jayawardene was apparently caught first ball by Michael Lumb but stood his ground and profited when third umpire Steve Davis somehow decided replays were inconclusive.
But England had themselves to blame too, dropping him on 19 and 80 as well as botching a run-out on 43.
Tillakaratne Dilshan, who made 55, was also reprieved on 21 as Sri Lanka's second-wicket pair rode their luck to put on 145 in 15.2 overs together.
Needing victory to keep realistic hopes of a semi-final berth alive, England were firm underdogs at the halfway stage.
They enjoyed a good start in the field but it might have been a great one had the catch controversy not fallen in Jayawardene's favour.
Jade Dernbach had a slice of luck when he had Kusal Perera strangled down the leg side but he paid back that good fortune with interest when Jayawardene propped uppishly towards point.
Lumb threw himself towards a low chance and claimed a tricky catch before joining his team-mates in celebration.
But Jayawardene stood his ground and when the on-field umpires sent the decision upstairs, there was a grim inevitability about Davis' 'not out' verdict.
The batsman promptly hit three of his next six balls for four, while Dilshan announced himself by getting off the mark with a trademark scoop for six.
Jayawardene had a second life on 19 when he mis-hit Bresnan straight to the waiting Dernbach, who spilled the simplest of chances at mid-on.
England have made much of their togetherness on this trip and Bresnan showed solidarity with Dernbach when he dropped Dilshan.
All the while scoreboard ticked along and Jayawardene had reached 43 when he took on Bresnan's arm, a decision that would have seen him run out had Jos Buttler not missed the stumps as he gathered the throw.
After 10 overs the score was 70 for one and Jayawardene quickly set about adding to that as he attacked England's steadiest bowler, James Tredwell.
His last two overs cost 27 as Jayawardene started to find the ropes with ease and added a second six from Tredwell's final delivery.
There were 14 more off Bresnan's next visit, Jayawardene responsible for all but two after ending the over with another maximum.
Unbelievably he was dropped by Bresnan again before Jordan finally took the direct route and parted his stumps.
Dilshan followed closely behind, caught off a Dernbach slower ball, while Jordan removed Kumar Sangakkara for a golden duck.
But Thisara Perera (23no) and Angelo Mathews added late runs and there was even time for one more drop, Bopara putting Thisara down in the final over.