Milan duly edged ahead on 15 minutes as Calhanoglu's free kick was headed home by Cutrone, though replays appeared to suggest that the 20-year-old had connected with his arm.
However, the hosts were ahead once again as Bonaventura connected with a Davide Calabria cross to head past Strakosha on the stroke of half time.
Both sides spurned a number of gilt-edged chances in the second half, with the Biancocelesti desperately chasing an equaliser, but Milan held on for all three points.
AC MILAN (4-3-3): Donnarumma; Calabria, Bonucci, Romagnoli, Antonelli (Abate 71'); Kessie, Biglia, Bonaventura; Suso (Borini 80'), Cutrone (Silva 70'), Calhanoglu
LAZIO (3-5-1-1): Strakosha; Bastos, De Vrij (Felipe 73'), Radu; Marusic (Nani 82'), Parolo, Leiva (Anderson 52'), Milinkovic-Savic, Lulic; Alberto; Caicedo