Crotone started relatively well without giving Gianluigi Donnarumma too much work to do.
But Ibrahimovic was put through on Alex Cordaz by a gorgeous Rafael Leao ball to score his 500th club goal, and his 501st came after the hour mark.
Ante Rebic added some gloss to the scoreline scoring twice, with his goals separated by just a minute, as Milan hit the Calabrians with three goals in a six-minute window.
The win sees the Rossoneri climb back above Inter at Serie A’s summit, where they hold a two-point cushion over their cross-city rivals.
Substitute Mario Mandzukic came close to a fifth for Milan late on, but his effort was cleared off the line.