In a winner takes all clash to take second spot in Group A behind confirmed winners Bordeaux, Bayern went for the jugular and deservedly earned their place in the last 16.
Juve, who only needed a draw to progress, were a shadow of the team that beat Inter Milan on Saturday and will join Liverpool in the Europa League at the turn of the year.
Playmaker Diego claimed the Italians lacked the right character to win and said he understood fans who jeered at the final whistle.
“The jeers were justified given that we didn’t do well, the fans should react like this,” he said. “Our attitude wasn’t right, things were different against Inter. Bayern understood what they had to do on the pitch.”
Bayern, who started the match a point behind their hosts, came into the game knowing they had to win and played with an almost reckless but magnificent attacking verve.
Coach Louis Van Gaal, much maligned in Germany this season as his team sit fourth in the Bundesliga, said there were two ways of looking at this game.
“You could say that Juventus played terribly but you could also say that we played brilliantly,” he said. “We were well organised in the middle, we held onto the ball well and we always tried to go forward with conviction and maybe this was simply too much for Juve.”
They should have been ahead on five minutes but Bastian Schweinsteiger lost his head and his range after Philipp Lahm pulled the ball back to him on the edge of the area, firing hopelessly into row Z.
Seven minutes later the Germans hit the woodwork as Ivica Olic’s header from captain Mark Van Bommel’s cross bounced up onto the post.
But disaster struck for the visitors on 19 minutes as Martin Demichelis’s ill-advised foray out from the back saw him disposseed by Diego, who passed to Claudio Marchisio and his first time cross to the back post was dispatched with aplomb on the volley by David Trezeguet, who rolled back the years with a sensational finish.
Bayern were straight back on the attack and Gianluigi Buffon tipped a Schweinsteiger shot over before Olic headed too high from Danijel Pranjic’s cross.
The equaliser came on the half hour as Olic went down – willingly enough – from a rash challenge by Martin Caceres, and goalkeeper Hans-Jorg Butt stepped up to send Buffon the wrong way from the spot.
Moments later Felipe Melo’s backheel gave the ball away in the Juve box and Schweinsteiger’s shot was deflected over Buffon and the bar.
When the half-time whistle came Juve were relieved having been totally dominated for 45 minutes in which Schweinsteiger alone had almost a half dozen shots from midfield, far more than the Juve team put together.
Such was Juve coach Ciro Ferrara’s concern that at the break he hauled off striker Alessandro Del Piero for defensive midfielder Christian Poulsen.
But they paid for their negativity on 52 minutes as Bayern came out ahead. Van Bommel crossed from the right and although Buffon parried Daniel Van Buyten’s header, Olic swept home the loose ball.
That injected a bit of urgency into Juve’s play and Poulsen headed Diego’s free-kick over the bar on 59 minutes.
On 66 minutes Caceres got to the byline and pulled the ball back for Trezeguet, but on the turn the Frenchman blazed over.
But Juve could not put any more pressure than that on their visitors and Bayern was soon back on the attack, given a boost by the entry of substitute Arjen Robben.
On 83 minutes Bayern secured a much deserved victory as Holger Badstuber’s corner was inadvertently flicked goalwards by Nicola Legrottaglie. Although Buffon kept the ball out with his legs, Mario Gomez poked home the rebound.
Substitute Anatoliy Tymoshchuk drilled home the final nail in Juve’s coffin in injury time.