The Rossoneri went ahead through Rafael Leao but saw Franck Kessie sent off for two bookable offences in the opening half hour.
Despite playing with a man less for much of the game, Milan appeared set for victory until Antoine Griezmann equalised late on, and were undone when Pierre Kalulu handled in the box in stoppage time to allow Luis Suarez to net a winning penalty.
Maignan 6.5; Calabria 6.5, Tomori 7, Romagnoli 6.5, Hernandez 6; Bennacer 8 (’81 Florenzi 6), Kessie 4.5; Saelemaekers 7 (’81 Kalulu 5.5), Diaz 8 (’57 Ballo-Toure 6), Leao 7.5 (’57 Giroud 5); Rebic 5.5 (’34 Tonali 7)
Player of the match: Brahim Diaz
The young midfielder shone with some wonderful close control and dribbling, whilst his eye for a pass caused no end of trouble for Atletico. A clever turn and lay-off provided the assist for Leao, whilst he also split the defence open with a through ball that Rebic ought to have finished.