The topsy-turvy game at the Principality Stadium finished deadlocked at 2-2 after 90 minutes, but substitute Daniel James struck the winning spot-kick after David De Gea saved Daniel Maldini’s weak effort.
Earlier, Marcus Rashford had given United the lead, before former Liverpool man Suso restored parity.
Samu Castillejo’s deflected header off Victor Lindelof put Milan in front on the hour mark, but the Reds fought back to level through substitute Jesse Lingard and send the match to a shoot-out.
The result puts us on eight points in the International Champions Cup table, meaning Benfica cannot be caught and are ICC champions for 2019.