London: Sri Lanka sealed a semi-final place in the ICC Champions Trophy with a 20-run win over Australia - ending the campaign of the defending champions.
Angelo Mathews' side struggled with the bat and were only able to set Australia 254 to win but a strong bowling display ensured their progression from Group A alongside co-hosts England.
George Bailey's side needed to achieve that total in 29.1 overs to guarantee them a place in the final four and although there were moments during their reply that a victory looked possible, the regular fall of wickets restricted their ability to build partnerships.
Mahela Jayawardene (84) and Tillakaratne Dilshan (34) starred for Sri Lanka, with the opening batsman also taking the final wicket to book a semi-final against India.
Their own innings started poorly as two early wickets left them 2-20 but a 72-run partnership between Dilshan and Lahiru Thirimanne (57) got them going again.
Just when things were beginning to look promising they lost three quick wickets to leave them 5-159 but they were rescued by another good partnership of 65 runs between Jayawardene and Dinesh Chandimal.
Two late run-outs left them on 8-253 after 50 overs, with Jayawardene striking his 84 off 81 balls, including 11 fours.
Australia's response could not have got off to a worse start as they lost Shane Watson for just five, the opener playing all around a Nuwan Kulasekara (3-42 off nine overs) delivery, but a promising partnership from Philip Hughes (13) and Glenn Maxwell (32) looked like giving them hope.
The pair put on 26 very quickly but the loss of Hughes stopped their onslaught, Maxwell followed soon after as Lasith Malinga (1-60 off nine overs) clipped his leg stump and captain Bailey (four) was not far behind him after a shocking piece of running that left Michael Clarke with his head in his hands in the dressing room.
He flicked a shot off his legs but rather than run to the boundary it went straight to Kulasekara at short leg, Bailey began to amble his way down the wicket but realised late that the throw was coming to his end and a direct hit caught him well short of his ground.
Mitchell Marsh (four) offered little resistance, playing a poor shot to a Mathews (1-21 off three overs) delivery soon after to leave Australia at 5-80.
Matthew Wade threw the bat to score 31 off 23 balls but as he went for another big shot he was caught at long on by Dilshan off Kulasekara.
A superb catch from Kumar Sangakarra off Rangana Herath (2-48 off 10) got rid of James Faulkner for 17, while Mitchell Johnson was dismissed for four after getting a top edge on a Shaminda Eranga (1-40 off eight overs) delivery, with the impressive Kulasekara taking the catch.
After some resistance with Clinton McKay (30), Adam Voges was finally out caught at long on after top scoring with 49.
He survived a stumping appeal and then launched Herath down the ground with the next ball only to find Eranga, who held on easily.
The final wicket to fall was that of McKay, the number 10 put up a brave fight to try to claim an unlikely victory but he miscued a Dilshan (1-11) delivery straight back to the bowler, the spinner changing direction in his follow through to take a superb catch.
Earlier, Australia captain George Bailey won the toss and he invites Sri Lanka to bat.
Both teams are unchanges. It means Clarke misses out again.
Australia: Shane Watson, Matthew Wade (wk), Phillip Hughes, George Bailey (Capt.), Adam Voges, Mitchell Marsh, Glenn Maxwell, Mitchell Johnson, James Faulkner, Clint McKay, Xavier Doherty
Sri Lanka: Tillakaratne Dilshan, Kushal Janith Perera, Kumar Sangakkara (wk), Mahela Jayawardene, Dinesh Chandimal, Lahiru Thirimanne, Angelo Mathews (Capt.), Nuwan Kulasekara, Rangana Herath, Shaminda Eranga, Lasith Malinga
Sri Lanka 253 for 8 (Jayawardene 84*, Thirimanne 57, Johnson 3-48)
Australia 233 (Voges 49, Kulasekara 3-42)
Result Sri Lanka won by 20 runs
Points Sri Lanka 2, Australia 0
MOM Mahela Jayawardene (Sri Lanka)