Bologna starting XI (4-2-3-1): Ravaglia, Zortea, Casale, Heggem, Miranda (subbed for Lykogiannis), Freuler (subbed for Moro), Ferguson, Orsolini (subbed for Bernardeschi), Odgaard, Rowe (subbed for Cambiaghi), Castro (subbed for Dallinga)
Bench: Pessina, Franceschelli, Pobega, Helland, Joao Mario, Sohm, Dominguez
AC Milan starting XI (3-5-1-1): Maignan, De Winter, Gabbia, Pavlovic, Athekame (subbed for Tomori), Fofana, Modric (subbed for Jashari), Rabiot, Bartesaghi (subbed for Estupinian), Loftus-Cheek (subbed for Ricci), Nkunku (subbed for Fullkrug)
Bench: Terracciano, Torriani, Leao, Odogu
Goals: Loftus-Cheek 20’, Nkunku 39’ (Pen), Rabiot 48’
The Rossoneri took charge early and delivered decisive blows at key moments to see out all three points.
Milan took the lead in the 20th minute when Ruben Loftus-Cheek finished smartly from inside the area after several attempts put Bologna’s defence under sustained pressure.
The visitors continued to assert themselves, dominating possession and creating openings while keeping a well-organised Bologna side at arm’s length.
In the 39th minute, Christopher Nkunku confidently converted a penalty awarded for a foul by Bologna goalkeeper Federico Ravaglia, steering his effort into the bottom right corner to double Milan’s advantage.
Milan made their superiority count once again just after the break. In the 48th minute, Adrien Rabiot intercepted a poor throw-in before running in on goal and rifling the ball past Ravaglia.
Adrien Rabiot bags @acmilan's third of the night! The Rossoneri are running riot! 👏#BolognaMilan 0-3 pic.twitter.com/AxMjL4C0Vv
— Lega Serie A (@SerieA_EN) February 3, 2026
Bologna pushed to carve out chances as the match wore on, but Milan’s defence stood firm, and keeper Mike Maignan was rarely troubled.
The win keeps AC Milan second in the Serie A standings and maintains pressure on league leaders Inter. For Bologna, the defeat is a reality check in a season where European qualification remains a distant target and consistency continues to elude them.