England collapsed to 35 for three chasing 278 for victory before left-handers Morgan and Stokes changed the course of the game with a fourth-wicket partnership of 159.
Stokes s third one-day international century was his highest score at this level after the all-rounder had twice made 101.
When a second downpour ended the match with England 240 for four off 40.2 overs, the hosts were well ahead of the 205 they needed for a win under the Duckworth-Lewis-Stern method for rain-affected limited overs matches.
World Cup champions Australia had to win this match to join already-qualified England in the semi-finals of a tournament featuring the world s leading eight ODI teams after no result washouts in their previous two Group A fixtures.
But this defeat saw Bangladesh, who beat New Zealand by five wickets in Cardiff on Friday, into the last four instead.
Earlier, Mark Wood and Adil Rashid took four wickets apiece as Australia were held to 277 for nine after losing the toss.
Durham fast bowler Wood returned ODI best figures of four for 33 in his maximum 10 overs, while leg-spinner Rashid s return of four for 41 was his best against a Test nation at this level.
Travis Head s unbeaten 71 kept Australia in the game after earlier fifties from opener Aaron Finch (68) and captain Steve Smith (56).
Australia 277-9, 50 overs (T Head 71 no, A Finch 68, S Smith 56; M Wood 4-33, A Rashid 4-41)
England 240-4, 40.2 overs (B Stokes 102 no, E Morgan 87)
Result: England won by 40 runs (DLS)