Atalanta starting XI (3-4-1-2): Musso, De Roon, Djimsiti, Scalvini, Zappacosta, Pasalic (subbed for Adopo), Ederson, Ruggeri (subbed for Holm), Koopemeiners, De Ketelaere (subbed for Miranchuk), Lookman (subbed for Muriel)
Bench: Carnesecchi, Rossi, Zortea, Bonfanti, Mendicino, Del Lungo, Colombo, Manzoni, Cisse
Goals: Lookman 38’ 55’, Muriel 90+5’
AC Milan starting XI (4-3-3): Maignan, Calabria, Tomori, Theo Hernandez, Florenzi, Loftus-Cheek (subbed for Jovic), Reijnders (subbed for Adli), Musah, Chukwueze (subbed for Bennacer), Giroud, Pulisic
Bench: Mirante, Nava, Simic, Bartesaghi, Krunic, Pobega, Chaka Traore, Romero
Goals: Giroud 45+3’, Jovic 80’
Ademola Lookman put the hosts ahead in the 38th minute when his shot from just inside the box took a deflection and looped over Mike Maignan, who had already gone to ground to make the save.
Olivier Giroud equalised for Milan in first half added time when he headed in Alessandro Florenzi’s corner.
Lookman had his brace ten minutes after half time when he finished Charles De Ketelaere’s low ball into the box from close range.
Luka Jovic made it 2-2 in the 80th minute when he tapped into an empty net after Christian Pulisic’s low cross was unable to be cleared by four Atalanta defenders.
In the 93rd minute, Milan lost centre back Davide Calabria after a second yellow card for a reckless foul.
Two minutes later, Luis Muriel scored the dramatic winner in style with a backheel that beat Maignan in a moment the Frenchman will want to forget.
Milan stay third, now nine points behind leaders and rivals Inter.
Atalanta are eighth, two points behind a Champions League place.
Want access to every Serie A and Serie B game live and on demand? Subscribe here.