Sri Lanka reached the Champions Trophy semi-finals with a 20-run victory over holders Australia in the last league match at the Oval in London on Monday.
The Sri Lankans, who needed a win to stay in the competition, relied on aggressive half-centuries from Mahela Jayawardene and Lahiru Thirimanne to score 253-8 after being sent in to bat. Seamer Nuwan Kulasekara then picked up three wickets, effected a run-out and took a catch as the Australians were bowled out for 233 in 42.3 overs.
Sri Lanka and England finished level with four points each, but the hosts topped the group due to a superior net run-rate and will meet Group B runners-up South Africa in Wednesday's semi-final at the Oval.
Sri Lanka will clash with Group B winners India in the second semi-final in Cardiff on Thursday in a a repeat of the 2011 World Cup final in Mumbai which the Indians won.
The final is at Edgbaston, Birmingham, on Sunday.
Jayawardene, who became the eighth batsman to complete 11,000 one-day runs when he reached 62, anchored the middle-order with an unbeaten 84 off 81 balls.
"It felt good to get to 11,000 runs, but winning this game was the icing on the cake," said the 36-year-old former captain, who was named the man of the match. "We are playing hard and passionate cricket. That has been the mantra of our success in the past and I hope it continues in the future also.
"We look forward to another tough match in the semi-final." Australia, who needed to win in 29.1 overs to qualify, made a brave bid to secure their first victory in the tournament with belligerent batting led by Adam Voges' top score of 49.
The Aussies were 192-9 when the last-wicket pair of Clint McKay and Xavier Doherty gave Sri Lanka a fright by adding 41 amid mounting tension. Tillakaratne Dilshan ended the drama with a spectacular return catch to dismiss McKay, who made a career-best 30. Doherty remained unbeaten on 15.
"It would have been nice to get over the line in the end," Australian captain George Bailey said. "Our goal was to do it in 29 overs, but we never got going. But it was good to see the last two fight it out."
The fightback would have been followed keenly by New Zealand, who would have joined England in the semi-finals if the last pair had scored the remaining runs.
In the end, the Black Caps were stranded on three points, one behind both England and Sri Lanka. Australia finished with just one point through a rain-affected game.
Glenn Maxwell, a million-dollar signee with Indian Premier League franchise Mumbai Indians, smashed 32 off 20 balls before he was bowled off his IPL team-mate Lasith's Malinga third delivery.
Kulasekara, who bowled Shane Watson and had Phil Hughes caught behind, ran out Bailey with a direct throw from fine leg to make it 69-4 in the ninth over.
Matthew Wade picked up the scoring rate with a 22-ball 31 that contained four boundaries and a six, adding 47 for the sixth wicket with Voges. Voges was ninth out, caught in the deep off Rangana Herath, before McKay and Doherty put on their defiant stand.
Earlier Sri Lanka, put into bat, were straight away on the back-foot, losing Kusal Perera (4) and Kumar Sangakkara (3) with the score on 20.
Tillkaratane Dilshan (34) and Lahiru Thirimanne (57) brought the Lankans back on track with a 72-run stand for the third wicket.
It was a Jayawardene masterclass from thereon in as the diminutive right-hander stroked 11 boundaries and took his team to a fighting total.
The key, though, was the 65-run partnership that the former captain forged with Dinesh Chandimal (31).