Australia 168 for 8 (Maxwell 54*, Marsh 45, Naveen-ul-Haq 3-21) beat Afghanistan 164 for 7 (Rashid 48*, Gulbadin 39, Zampa 2-22) by four runs
Adelaide: Australia beat Afghanistan by four runs in the Men's T20 World Cup but failed to achieve the net run-rate swing required to further boost their chances.
It means if England beat Sri Lanka by any margin on Saturday, they will progress at the hosts' expense.
If Sri Lanka win, Australia will join New Zealand in progressing from Group 1 to the last four.
Australia needed a big victory in Adelaide to pile the pressure on England but could not break free with the bat as they were restricted to 168-8, meaning they had to keep Afghanistan below 119 to have a chance of pipping England on net run-rate.
In the end Australia, without injured captain Aaron Finch or the curiously dropped Mitchell Starc, were almost beaten, which would have ended their hopes entirely.
Afghanistan reached 99-2 after 13 overs of their chase before three wickets in four balls - a brilliant Glenn Maxwell run-out and two for spinner Adam Zampa - swung the game back towards Australia.
Rashid Khan then smashed 48 not out from 23 balls but with 22 needed from the final over, Afghanistan came up short, despite Rashid flogging a six and two fours.
Earlier, David Warner gave Australia a fast start with 28 but the regular loss of wickets checked the scoring, Maxwell top-scoring with 54 not out from 32 balls.
Credit should also go to an excellent Afghanistan bowling performance with Naveen-ul-Haq closing out the innings brilliantly and taking 2-20.
New Zealand beat Ireland earlier on Friday and have secured one of the two semi-final places. They will almost certainly take top spot unless England win by a huge margin.