The 38-year-old broke the deadlock with a towering header in the 35th minute and added the second with a penalty -- the first in Serie A this season -- five minutes after the break.
Milan extended their unbeaten run to 15 games in all competitions as they started where they left off last season, suggesting they are capable of battling for a Champions League spot.
"If I was 20-years-old, I'd have scored another two," said Ibrahimovic, who has 14 goals in 22 matches since returning for a second stint at Milan in January.
"I don't want people to talk about my age, I want to be treated the same as everyone else. It doesn't matter if I am 38, I want to be treated like someone aged 20 and do the same work."
Bologna coach Sinisa Mihajlovic added that Ibrahimovic was the difference between the sides.
"They had Ibrahimovic and we didn't," he said. "Everything they created came from him. Apart from that, it was an even match."
Roberto Soriano nearly gave Bologna a shock lead after 90 seconds when his shot was deflected wide but Milan, who had lost their opening league match in the last two seasons, took control after that.
Milan went further ahead after the break when Bennacer was brought down by Riccardo Orsolini.
The referee initially awarded a free kick but changed his decision to a penalty after consulting the VAR officials and Ibrahimovic fired the ball into the top right-hand corner.
He was presented with a gilt-edged chance to complete his hat-trick by Hakan Calhanoglu's break upfield but, having rounded goalkeeper Lukasz Skorupski, he fired wide of the target, albeit somewhat off-balance.
One thousand spectators were allowed into the San Siro under COVID-19 regulations and Milan invited local healthcare workers to take those places.