Plzen, taking part in the Champions League for the first time, had the first chance of the match and created plenty of other openings as they refused to be overawed at the San Siro.
But they were undone in the 53rd minute when Ibrahimovic flicked the ball up in the area and it hit Marian Cisovsky's hand.
Although there was clearly no way Cisovsky could get his hand out of the way in time, referee Florian Meyer pointed to the spot and Ibrahimovic fired home the penalty.
Thirteen minutes later, the Swede, returning from a two-week injury lay-off, slipped a ball between two defenders for Antonio Cassano to chip over Plzen goalkeeper Marek Cech for the second.
"It was a very severe penalty and it was a turning point in the game," said Plzen coach Pavel Vrba, who last season stunned Czech football by taking his team of unrated journeymen to their first league title.
Milan coach Massimiliano Allegri, whose team have four points from two games in Group H alongside holders Barcelona, had other ideas in his news conference: "The match was balanced until the penalty but it was a clear penalty."
With a team built around 36-year-old playmaker Pavel Horvath and unable to use their own stadium because it is not up to competition standards, Plzen seemed the unlikeliest of teams to cause an upset.
But the team from the town famous for producing Pilsener beer nearly went ahead when Marek Bakos saw his close-range header turned away by Christian Abbiati in the third minute.
Plzen, who began their campaign away to Armenia side Pyunik in July and won all six qualifying games, went on to produce 13 shots to Milan's 14 and four corners to the hosts' five.
Although Milan were missing Robinho, Alexandre Pato, Kevin-Prince Boateng and Philippe Mexes, none of that mattered as Ibrahimovic recovered from the thigh injury which kept him out of the 2-2 draw at Barca two weeks ago.
His first contribution was to burst down the right and produce a low cross for Cassano whose strike was brilliantly saved by Cech's legs.
Cassano had another shot tipped around the post by the goalkeeper and then it was Ibrahimovic's turn as Cech pushed his close-range shot over the bar and then dived to smother another effort.
Plzen put together plenty of good moves of their own, the best ending with Horvath somehow shooting wide from near the penalty spot.
Ibrahimovic's goal put paid to their hopes and the Swede then put on a party piece as he played keepy-uppy down the left, flicked the ball to Clarence Seedorf and he found Cassano, who shot wide.
Cassano made no mistake from the next chance, however, as he sealed only Milan's second home win in the Champions League in the last three seasons.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.