The victory importantly means the Kangaroos will likely top Pool A and avoid defending champions New Zealand in the knock-out phases of the October 26-November 30 tournament.
England jumped out to a 10-0 lead through tries from Ryan Hall and Leroy Cudjoe, but Australia hit back in a purple patch with three tries from Johnathan Thurston, Greg Bird and Billy Slater, all converted by Thurston.
Wingers Brett Morris and Darius Boyd scored for the Kangaroos in the second-half, Thurston also nailing a penalty.
England replied with a George Burgess try converted by Kevin Sinfield, and a late consolation try by Josh Charnley.
“I’m just very happy with the result, it wasn’t our best performance by a long shot,” Australia captain Cameron Smith said.
“We were pretty ordinary, to be blunt, in that first 20 minutes. I was really happy with the boys’ composure. We were under a lot of pressure with England playing well early and scoring first but we found a way to come back and score some points.”
England coach Steve McNamara said he had been left “frustrated” after their excellent opening spell.
Australia coach Tim Sheens had plumped for experience in his line-up at Cardiff’s Millennium Stadium, where the roof was closed, and it showed through after a shaky opening.
The Kangaroos spurned an early penalty chance after a high Ben Westwood tackle but the English defence held out.
When Sinfield made a similar decision, the ball was spun quickly to the left from the first tackle.
Three dummy runners in midfield and a decisive floated pass from Sam Tomkins handed Hall a run at the line, the winger stepping in to ride veteran Brent Tate’s desperate tackle to cross in the corner, Sinfield missing the extras.
Powerful prop George Burgess, playing alongside brother Sam with twin Tom on the interchange, had a try disallowed after losing the ball over the line.
It was all England, with the forwards making constant in-roads down the middle of the paddock, prop Chris Hill knocking on with the line at his mercy.
When Sinfield sent a clever kick left, the Australian defence failed to gather cleanly, Cudjoe outjumping Brett Morris to claim the bounce, spin and ground the ball for England’s second try, Sinfield kicking the conversion for a 10-0 lead.
Australia responded through Thurston, who touched down after Greg Inglis beat Tomkins to a towering up-and-under and smartly offloaded on landing. The stand-off converted his own try.
Sam Burgess made a vital tackle as Thurston split the defence, batting the ball out of his hands, with England suddenly looking weary in defence.
Bird crossed for Australia’s second after a delayed Thurston pass found Sinfield out of position and the prop powered through the welcome gap to dot down, Thurston kicking the extras to hand the Kangaroos the lead just before half-time.
Slater then wrapped up Australia’s comeback, the full-back who made more breaks (25) than any other player in the NRL this season showing a clean pair of heels to sprint away from a midfield scrum after selling Cudjoe a dummy and then fending off Sam Burgess.
The second period started badly for England with winger Josh Charnley running the ball into touch near his own line.
From the resulting Australian scrum, the ball was fed wide to Morris, who showed great strength to touch down under pressure from Cudjoe and Tomkins.
But the English were not completely down and out, George Burgess powering over from close range after a short pass from James Roby, Sinfield hitting a second conversion to make it 22-16.
Sam Burgess floored Sam Thaiday with a swinging arm into the tackle, an act that might see further repercussions for the Englishman.
Thurston then hit a 65th minute penalty after the ball was needlessly stripped away from an Australian attacker.
Winger Boyd then crossed in the corner after slick passing from Thurston and Slater.
Charnley capitalised on a handling mistake to score a late consolation try, but the game was over as a contest by then.