James Faulkner's sensational late assault powered Australia to a dramatic one-wicket victory over England in the second one-day international in Brisbane.

Crushed 5-0 in the Ashes series and thumped in the first one-dayer in Melbourne, England sensed the chance of securing a first win over Australia on the tour after Eoin Morgan's sparkling 106 powered them to a commanding 300 for eight.

The hosts made a feeble start to their chase but Shaun Marsh contributed 55 before Glenn Maxwell (54) and Faulkner (69 not out) took over.

There were 25 runs needed, and just two overs in which to find them. Faulkner's only company was No.11 batsman Clint Mackay. It looked forlorn but he blasted a six off Ben Stokes, then another, and stole a single off the last ball of the over. Facing Tim Bresnan and still needing 12 runs, Faulkner hammered three fours in a row to trigger wild celebrations around the ground.

He remained unbeaten after his 47-ball blitz, studded with three fours and five sixes. "He is the new finisher, the new Michael Bevan," Michael Clarke, the Australia captain, said. "He showed he is a wonderful player with loads of talent and he strikes the ball as cleanly as anybody . . . he deserves all the credit in the world."

After Alastair Cook had opted to bat first, Morgan teamed up with Jos Buttler (49) to plunder 117 runs in 11.2 overs and help England post a competitive total against an Australia attack boosted by the return of their Ashes hero Mitchell Johnson. Having scored only one, Morgan was caught off Clarke at deep midwicket but the 27-year-old left-hander had the presence of mind to point out there was an extra fielder outside the ring; the delivery was adjudged a no-ball.

The Dublin-born player brought up his sixth one-day international century in spectacular fashion, bending backwards to guide a short Nathan Coulter-Nile delivery over the wicketkeeper's head for a boundary.

Morgan's 99-ball knock ended in the final over when he miscued a Faulkner delivery, but England had managed 104 runs from the final 10 overs to post an imposing total.

When they returned, Gary Ballance took a one-handed catch to send back Aaron Finch, who followed his Melbourne century with a three-ball duck. Chris Jordan then caught a full-blooded shot from David Warner (18) off his own bowling to deny Australia a flying start. Maxwell refused to give up, though, adding 80 runs with Brad Haddin (26) in just over eight overs to rekindle the hosts' hopes before Faulkner performed his last-ditch heroics.

"It took an unbelievable innings to beat us," Cook said. "Three hundred was defendable . . . it's an emotional dressing-room now, a tough place to be, but when we look at it tomorrow we'll realise it was an astonishing innings that beat us."