The league leaders’ 27-match unbeaten run was ended by Juventus on Wednesday, but they showed little sign of dwelling on the result as a Rafael Leao strike and Franck Kessie penalty gave the hosts a commanding lead by halftime.
Ricardo Rodriguez summoned the visitors’ best effort when he crashed a free kick off the bar, but they struggled to threaten in open play.
A further boost for Milan was the return of top scorer Ibrahimovic, who came on as a substitute for the final five minutes to make his first appearance since suffering an injury against Napoli on Nov. 22.
The result leaves Milan on 40 points, four ahead of rivals Inter Milan, who travel to third-placed AS Roma on Sunday.
Torino, whose four-match unbeaten run came to an end, remain in 19th place on 12 points, two adrift of the safety zone.