A crowded house in Pasadena was treated to a dramatic first 45 minutes as both sides battled for the first goal.
However, it was Milan who struck first, with Fikayo Tomori leaping above the Madrid defence to nod home a Christian Pulisic corner just before the half-hour mark.
Milan's night swiftly turned from good to brilliant when 18-year-old Luka Romero lashed in the Rossoneri's second goal of the night from the outside of the box, just minutes after replacing Junior Messias.
🏁 FP: @realmadrid 3-2 @acmilan
— Real Madrid C.F. (@realmadrid) July 24, 2023
⚽ @fedeevalverde 56', 59', @vinijr 84'; Tomori 25', Romero 42'#RealMadridOnTour pic.twitter.com/wkk7wMZk0b
Milan disintegrated after the interval, despite looking pretty comfortable in the first half.
Fede Valverde's seemingly innocuous shot from beyond the box found its way past Marco Sportiello in the Milan goal, and two minutes later a sloppy mistake at the back allowed Valverde to recover parity from close range.
After Milan ran bad luck, the two sides swapped opportunities, but it was Real Madrid who stole the win late on via Vini Jr., who slipped in behind the Milan defence to slot home in the final minutes.