AC Milan sealed a win in their pre-season friendly against Bayern Munich as Giacomo Bonaventura scored the winning penalty in a shoot-out.
Bayern forced the shoot-out from the jaws of defeat in a spirited affair against Milan, with Franck Ribery converting a late penalty to level the scores at 3-3 at full-time.
However, Milan got one over former coach Carlo Ancelotti, as the Italian giants kicked off their International Champions Cup campaign in style with a solid performance, despite the late goal.
Bayern remain undefeated this pre-season in regular time, having beat Manchester City and Landshut, but they almost came undone against the Milan side who were enjoying just their second hit-out.
Juraj Kucka scored what looked to be the winner for Milan just after the hour mark, completing a comeback from 2-1 down after Milan had opened the scoring courtesy of M'baye Niang's 22nd-minute opener, but that was all ruined by Ribery's late penalty.
Milan coach Vincenzo Montella joined Ancelotti in naming a strong line up, with the former's XI including number one goalkeeper Gianluigi Donnarumma, as well as Riccardo Montolivo, Alessando Romagnoli, Niang and Suso, while the latter picked the likes of Philipp Lahm, David Alaba, Xabi Alonso and Franck Ribery.
Niang opened the scoring after 22 minutes when he pounced on an error at the back from Holger Badstuber, whose slip-up in defence allowed the Frenchman to burst through into a one-on-one with keeper Sven Ulerich, before slotting coolly past the Manuel Neuer stand-in.
But their lead was short-lived as Ribery continued his comeback from injury in style, slashing home a lovely strike following good work down the left flank from Alaba.
The Frenchman showed a sublime touch to kill Alaba's drilled cut-back, before unleashing a low-hard shot Donnarumma could not stop into the bottom-left corner.
Alaba made it 2-1 to Bayern just nine minutes later as he sent a swerving shot through a crowd of defenders which deceived the young Milan shot-stopper.
Both sides returned largely unchanged, bucking the pre-season trend of wholesale half-time changes, and it was Milan who looked the sharper, as Andrea Bertolacci equalised just minutes after the restart.
Kucka was fortunate to score what looked to be the winner just after the hour mark as his shot from range took a heavy deflection to send Ulreich the other way and bobble over the line.
But as the clock ticked on towards the 90-minute mark, Bayern upped the pressure and the Milan defence finally cracked when a clumsy challenge in the box saw the referee award a penalty.
Ribery stepped up confidently to seal his brace and force the penalty shoot-out in Chicago.
A high-quality penalty shoot-out followed with the first seven penalties coolly converted, including a lovely paneka from Kucka, before Rafinha's effort was saved by Donnarumma, allowing Bonaventura to smash home the winner.