Finisce 0-0 il secondo anticipo della dodicesima giornata di Serie A a San Siro, ma al termine della gara, chi recriminerà maggiormente per la mole di gioco creata e per il maggior numero di occasioni sarà la squadra ospite, messa in campo con ordine e compattezza da Edoardo Reja, che è riuscito ad imbrigliare un Milan di Mihajlovic arruffone, lento e poco lucido in fase di impostazione. Si erge a protagonista, nella mediocrità della serata rossonera, il portiere Donnarumma, che nella ripresa salva in tre occasioni il risultato. La striscia vincente dell'allenatore serbo si ferma a quota tre. 

L'ex allenatore della Sampdoria ripropone De Sciglio ed Antonelli sugli esterni, con Mexes che affianca Romagnoli al centro della difesa. Poli e Kucka sono le mezzali con il compito di difendere Montolivo centralmente e di fare da raccordo con il tridente che si compone con i soliti Cerci e Bacca e con l'esordiente Niang. Dalla parte opposta Reja risponde con la stessa moneta: il suo 4-3-3 risulterà più corto, compatto ed efficace in fase di impostazione, dove De Roon, Cigarini e Kurtic faranno la differenza rispetto alla mediana avversaria. Gomez e Moralez larghi sugli esterni per imbeccare Pinilla centralmente. 

L'Atalanta si impone fin dalle prime battute di gioco, entrando in campo con maggiore personalità rispetto ad un Milan che è sembrato appannato e frastornato già dalle prime battute. Reja fa densità a centrocampo, dove De Roon è mastino indomabile e perfetto recuperatore di palloni oltre che preciso metodista in fase di ripartenza. Proprio da un contropiede, con Pinilla abile nello svariare da destra a sinistra del fronte d'attacco, nasce la prima occasione ospite: il cileno si allarga sulla destra alle spalle di Antonelli ed imbecca centralmente il taglio di Cigarini che sfiora all'atlezza del dischetto. I bergamaschi sono propositivi ed asfissianti in pressione: il baricentro è altissimo e da una palla recuperata sulla trequarti nascono le iniziative ospiti, che però Gomez e Moralez non capitalizzano. La squadra di casa, nonostante le reprimende del proprio allenatore non si scuote, fatta eccezione per un'occasione di Bacca su assist di Niang (dal quale partono le migliori, forse uniche, occasioni dei rossoneri): il colombiano si accentra ma perde il tempo di battuta prima che Paletta muri la sua conclusione. Poche altre emozioni nel primo tempo, con l'Atalanta che si limita a gestire possesso e ritmi di gara, tema che non cambierà per tutto l'arco della sfida. 

Così come si è chiusa la prima frazione si apre, dunque, la ripresa. Dea in attacco, meglio messa in campo e, in fase difensiva, ordinata e composta, con Sportiello che recita perfettamente la parte dello spettatore pagato. Mihajlovic chiede ai suoi mediani di allargare l'azione sulle corsie laterali ma sia Cerci che Niang raramente troveranno gli spunti giusti per far male agli ospiti. Sono proprio questi ultimi, invece, con personalità ed irruenza a mettere ripetutamente paura a San Siro a cavallo di metà secondo tempo: Moralez inventa dalla destra per Cigarini che si inserisce perfettamente di testa, ma Donnarumma con un riflesso evita il vantaggio. Il portierino rossonero si esalta e poco dopo si ripete opponendosi sul primo palo allo stesso Moralez, imbeccato da un ottimo Grassi. Infine, quando il Milan sbanda maggiormente, è Gomez ad andar via sulla sinistra (migliore in campo): il suo cross trova pronto lo stesso Grassi alla girata mancina, ma Donnarumma è ancora reattivo con i piedi in controtempo. Gli ospiti meriterebbero il vantaggio, ma col passare dei minuti la pressione si affievolisce ed i cambi di Mihajlovic (successivamente espulso), spezzano quantomento il ritmo all'Atalanta, anche se Luiz Adriano ed Honda non riusciranno ad imprimere un cambio di ritmo alla gara, che si trascina lentamente verso lo 0-0 finale.