The Australians claimed the seven remaining wickets on the final morning in Brisbane to go one-up in the three-Test series after dismissing the Black Caps for 295.
New Zealand were chasing a massive 504-run target after two innings declarations from the dominant home side, who easily maintained their 27-year unbeaten streak at the Gabba.
Pugnacious opening batsman David Warner was named man of the match after hitting centuries in both innings as the Australians powered away.
McCullum was well set for his first Test century in Australia on 80, when he got a disputed call from English umpire Nigel Llong who gave him out to a catch by Steve Smith at second slip.
McCullum protested, saying he had not hit the ball, but with New Zealand's two referrals already exhausted he trudged from the ground as hopes of staying in the match faded.
"It was a difficult game. I think Australia were outstanding. They played right from ball one, they put us under a lot of pressure," McCullum said.
Doug Bracewell went next ball, leg before wicket, putting Marsh on a hat-trick which Tim Southee saw off.
But Southee was soon out to another dubious caught behind decision off Josh Hazlewood with the game well and truly gone for the New Zealanders.
Mark Craig and Trent Boult added 46 runs for the last wicket, before Boult was caught behind for 15 leaving Craig unbeaten on 26.
McCullum raised his half-century off 44 balls with a towering straight six off spinner Nathan Lyon and loomed as his team's best hope of avoiding defeat.
James Neesham, who came into bat despite being ruled out for the rest of the series with back trouble, lasted 33 balls before he popped an easy catch to Joe Burns at short leg off Mitchell Johnson for three.
