Several English batsmen failed to capitalise on promising starts, but Buttler notched his fifth one-day global century from the last ball of the innings as England helped themselves to 38 off the final two overs.
Buttler took a single off the next ball and didn't get back on strike until the final delivery, but managed to squeeze Starc's attempted yorker into the legside field and scramble through to reach his hundred, leaping into the air with excitement.
England restricted Australia to 286-6 and victory will taste even sweeter given they got just 1.2 overs out of Liam Plunkett before he departed with a left hamstring injury, Joe Root picking up the slack in his stead and going for an expensive 0-60 from his 8.4. He faced 83 balls, hitting six fours and four sixes, in a dashing innings that gathered momentum in the last 10 overs.
After dropping the first two games of the five-match series, Australia have brought Pat Cummins, Josh Hazlewood and Adam Zampa back into their bowling attack alongside Mitchell Starc.
Needing 22 from the final Chris Woakes (2-57) over, Australia scored just three runs off the first two balls before their hopes were dashed when Marcus Stoinis (56 off 43) was caught on the backward square leg boundary. The English were aided by sloppy Australian fielding, with four missed catches and two botched run-out attempts. Cameron White is going to come in at No.3.
Marsh was the unlucky bowler, but had his revenge a few minutes later when he bowled Ali for six, continuing the all-rounder's wretched tour.