Fans were treated to a real spectacle that offered three goals and two red cards as Palermo punched their ticket to the final
After an intense first half, the hosts took the lead through Giulio Migliaccio shortly after the hour-mark. Cesare Bovo then doubled the home side's advantage with a penalty after a foul by Mark Van Bommel, for which the ex-Bayern Munich man received his marching orders.
Bovo was then sent off himself for a horrible kick on Alexandre Pato. Substitute Zlatan Ibrahimovic clawed one back just before the final whistle, but it was too little, too late as Palermo advanced to the Coppa Italia final thanks to a 4-3 aggregate victory.
The match got off to a thrilling start as Robinho was presented with a clear chance only three minutes into the game. Andrea Pirlo was the provider as his brilliant 30-yard pass from midfield found the Brazilian completely unmarked near the penalty spot, but the ex-Real Madrid striker blasted his shot over the bar.
The newly crowned Serie A champions continued to press and went close once again five minutes later when Mathieu Flamini rattled the bar with a powerful shot from outside the box. Clarence Seedorf was next in line to miss a great chance for the visitors as he sent a volley over the bar from 12 yards out.
Palermo came to life after Milan's period of domination with Javier Pastore at the centre of every good move by the hosts. The Argentine first had a long-range drive saved by Christian Abbiati, and then narrowly missed the top right corner with a stunning finish from outside the box.
Milan were enjoying the lion's share of possession, but were unable to create any clear cut chances. Palermo received some disappointing news in the 34th minute as Afriyie Acquah was forced to leave the pitch after picking up an injury.
Luca Antonini then blasted a shot wide of the left post in the 44th minute and shortly after was injured in a collision with team-mate Thiago Silva. He was replaced by Daniele Bonera shortly before the half-time whistle.
Eye on the prize | Palermo through to Coppa Italia final
The second period started brightly for Milan as Pato went close with a low finish from the right side of the box after a mesmerising run in the 51st minute. Palermo, however, looked the more aggressive of the two teams, pressing the visitors high up the pitch.
Shortly after the hour mark Palermo took the lead when Migliaccio headed a Josip Ilicic corner delivery into the right post and past the goal-line. Allegri threw injured striker Ibrahimovic into the fray in a desperate attempt to turn the game around and the big Swede went close in the 65th minute with an audacious backheel.
Palermo, however, were not content to sit back and preserve the result and nearly doubled their advantage through Abel Hernandez five minutes later when he blasted a volley just wide. Migliaccio should have made it two soon after, but he also failed to find the target.
Ilicic then found himself one-on-one with Abbiati in the 73rd minute, leaving Van Bommel no choice but to foul the substitute, seeing red in the process. Bovo was on target from the spot and the tie seemed already decided.
In a moment of madness though the goalscorer was sent off moments later as he kicked Pato in the face in an effort to clear the ball away.
Milan pushed for the remaining minutes of the game, and Ibrahimovic clawed a goal back in stoppage time, but it wasn't enough as the Serie A champions crashed out of the Coppa Italia.