Cristiano Ronaldo scored a late penalty Thursday to help Juventus salvage a 1-1 draw at 10-man AC Milan in the first leg of their Italian Cup semifinal.
Milan defender Theo Hernandez was sent off in the 71st following a second yellow card.
Milan coach Stefano Pioli said the late penalty shouldn't have been given.
''Just before the penalty incident there was a foul on Ibra that wasn't given,'' Pioli said. ''The play wouldn't have continued if the referee had intervened then. ... I am happy with the performance but disappointed with the result.''
There was heightened excitement at San Siro as it was the first time Ibrahimovic and Ronaldo had faced off against each other since 2015, when Paris Saint-Germain played Real Madrid.
Nearly 73,000 spectators were present -- a record for an Italian Cup semifinal.
Ronaldo had barely a sight of goal at San Siro before his penalty. Ibrahimovic went close on several occasions but was booked in the first half and will now miss the return match on March 4 as he had already received a yellow card in the competition - in the quarterfinal against Torino last month.
Milan midfielder Samuel Castillejo is also suspended for that match as is Hernandez.
''We will be missing many players in the return leg, we will need a huge performance,'' Pioli said.
Both teams came into the match after disappointing results in Serie A. Juventus lost to Hellas Verona, allowing it to be caught at the top of the table by Inter Milan, which fought back from 2-0 down to beat Milan in the derby.
Milan was lively from the start and had two chances in the opening two minutes, with Franck Kessie firing narrowly wide moments after Ibrahimovic had headed over the bar.
Juventus appeared sluggish and had to wait until the 36th minute for its first shot on target. Milan goalkeeper Gianluigi Donnarumma couldn't keep hold of Juan Cuadrado's shot but Kessie cleared the danger.
Ibrahimovic again went close on the hour but Juventus goalkeeper Gianluigi Buffon tipped the Swede's effort round the post.
Milan broke the deadlock two minutes later. Samuel Castillejo chipped in a cross that was probably meant for Ibrahimovic, but it went over him and Rebic scuffed it into the bottom left corner.
Milan went down to 10 men shortly after when Hernandez was shown a second yellow card for a foul on Paulo Dybala.
And worse was to come as Ronaldo's scissor-kick volley hit Calabria on the arm from point-blank range and the referee awarded a penalty after reviewing the incident on the pitchside monitor.
Ronaldo kept his cool to convert. The Juventus forward has scored in 13 of his past 14 matches in all competitions.
''He is an incredible champion, playing with him is one of the reasons I came back,'' said Buffon, who returned to Juventus in the offseason after a year at PSG.
Buffon walked out of San Siro with Daniel Maldini's shirt which had been given to him by the young midfielder's father, Paolo Maldini -- who Buffon played against on many an occasion and was teammates with on the Italian national team.
The 42-year-old Buffon is becoming used to playing against the sons of former opponents.
''In my collection I have [Enrico] Chiesa and son, [Lilian] Thuram and son, [George] Weah and son, and now Maldini and son. I'm waiting for their grandchildren,'' Buffon said with a smile.
Napoli plays Inter in the other semifinal. It won Wednesday's first leg 1-0 at San Siro and hosts the return match on March 5.