In an action-packed second half, substitute Nicolas Lopez fired the visitors into the last four with a 30-yard strike moments after coming off the bench.
Read how all the action unfolded below:
Good evening! It's just half-an-hour until kickoff at the San Siro, where AC Milan and Udinese will be looking to secure a place in the last four of the Coppa Italia. Let's take a look at the team news ahead of kickoff.
AC MILAN STARTING XI: Abbiati, De Sciglio, Zapata, Rami, Urby, De Jong, Nocerino, Birsa, Kaka, Robinho, Balotelli
UDINESE STARTING XI: Brkic, Danilo, Heurtaux, Domizzi, Gabriel Silva, Widmer, Fernandes, Allan, Badu, Lazzari, Muriel
So the home side have named a strong starting lineup for this evening's match, with Mario Balotelli, Robinho and Kaka leading the attack. Given their current league position, this could be AC Milan's best chance of securing a place in Europe next season.
Udinese have Thomas Heurtaux as their main threat this evening, with Antonio Di Natale starting on the bench. The visitors will no doubt be keen to reach the last four, but with games against Parma and Bologna coming up in the next 11 days, Udinese may be trying to rest Di Natale for the league, where they are just three points clear of the relegation zone.
AC Milan have been buoyed by the arrival of new manager, and former player, Clarence Seedorf in the last week. He secured his first win in the league at the weekend, beating Hellas Verona 1-0.
We've already had a look at the starting lineups for this evening's game, let's now check out the benches.
AC MILAN SUBSTITUTES: Coppola, Ferreira, Mexes, Silvestre, Lotti, Pinato, Honda, Abate, Constant, Di Molfetta, Mastalli, Modic
UDINESE SUBSTITUTES: Kelava, Bubnjic, Basta, Douglas, Gomes, Jadson, Pinzi, Maicosuel, Zielinski, Di Natale, Lopez, Pereyra
PREDICTION! Just before the players head out for this evening's clash, let's make a quick prediction. With Udinese resting a couple of players, and AC Milan having the home advantage, I think this should be a win for Seedorf's side, but the visitors won't make it easy, particularly as the San Siro is only half full! I think Milan will sneak it 1-0.
The players are making their way out of the tunnel ready for kickoff. We should be underway in the next couple of minutes.
KICKOFF! Milan get the game underway.
It's been a very open first few minutes in this cup tie. Udinese press forward early on and win a corner, but De Sciglio manages to head away for the hosts. Kaka quickly gets the ball down the other end before setting up Baltelli, but the striker's first touch is poor, and it's quickly gathered by Brkic
GOAL! AC Milan 1-0 Udinese (Balotelli)
Miguel Fernandes has a good chance for Udinese but loses his footing while getting his shot away, allowing the hosts to quickly apply pressure down the other end. Kaka crosses it in from the right, leaving Mario Balotelli a simple tap in to put the Rossoneri ahead
Udinese haven't let the early goal affect them, as they quickly look for an equaliser. Badu tries a powerful strike from the edge of the box, but it creeps wide. Muriel wins a corner moments later, but Balotelli helps out at the back to help clear the danger.
BOOKING! Andrea Lazzari picks up the first yellow card of the evening after dragging down Valter Birsa out wide. It also gives the home side a free kick from a strong position.
CHANCE! Kaka's delivery into the box from the free kick hangs dangerously, with plenty of men forward for the home side, but Brkic manages to claim it for Udinese.
Balotelli and Kaka team up on the edge of the box, but neither have room to go for goal themselves. The goalscorer hooks the ball high for Robinho, but the striker couldn't quite reach the ball in time.
Having survived a dangerous spell from the hosts, Udinese finally manage to get back inside the Ac Milan box, and win their third corner of the game. Once again, it's Balotelli who makes the clearance. He's made quite an impact in the opening spell of this match, breaking the deadlock as well as making a couple of important blocks at the back.
Robinho and Kaka are proving a dangerous partnership as they look to set up a second goal for the hosts, but they're seeing few chances themselves. Kaka tries to chip the ball forward for Birsa, but the visitors have numbers back and make the clearance.
CHANCE! Luis Muriel makes a stunning run from midfield, bursting into the penalty area, but he decides to take on the shot himself, rather than pulling it back for the incoming Loureiro, and he slices it well high of the target. It's a wasted opportunity for the visitors.
While the Rossoneri have certainly had the better and the majority of the chances so far, Udinese have not given up, despite going behind early on. They're constantly pushing to win the ball in midfield before testing the home side's defence with quick breaks, but they can't quite get the finishing product right at the moment.
Balotelli battles up front before passing out wide to Kaka, but the Brazilian playmaker can't get the ball back in the box for the striker. De Sciglo tries to play it back in with a run down the wing, but Udinese hold their hosts up in midfield.
Balotelli is left floored by a Domizzi challenge, but the visitors take advantage to press forward, much to the dismay of the home supporters, who want play stopped so that Balotelli can be helped up. However, Muriel's finish fails to find the target. Incidentally, Balotelli seems fine as soon as the ball goes out of play.
CHANCE! Christian Abbiati is called into action for the first time today as Emmanuel Agyemang-Badu carves out a solo chance, showing his pace before unleashing a powerful strike, only for the Milan keeper to tip it behind, before Balotelli clears the corner. The striker has been just as valuable at the back as up front this evening.
CHANCE! Udinese seem to have upped their game a little in the last couple of minutes, as Bruno Fernandes tries his look from the edge of the box, but Abbiati comfortably holds.
BOOKING! Thomas Heurteax loses out to Balotelli, but manages to stop the striker with a two-footed challenge, earning himself a yellow card.
SUB! The hosts have to make an early change, bringing on Philippe Mexes for Christian Zapata.
CHANCE! Nigel de Jong loses his footing in midfield, allowing Fernandes to sprint towards the AC Milan goal, but his shot is well saved by Abbiati, who has suddenly found himself being kept pretty busy.
PENALTY APPEAL! Udinese win another corner, which the hosts struggle to clear. Balotelli tries to help out with an overhead kick, but the visitors appeal for a penalty, believing that the ball may have struck the striker's arm, but their appeals are waved away.
PENALTY TO UDINESE!
BOOKING! Urby Emanuelson is booked for clattering into Silvan Widmer in the box.
GOAL! AC Milan 1-1 Udinese (Muriel pen.)
Luis Muriel has had a couple of poor finishes earlier on, but he makes no mistake from the spot, smashing his ball low into the bottom left corner. Abbiati guessed the right way, but just couldn't get down quick enough.
Zeljko Brkic almost gets himself in trouble at the other end of the pitch as he gather a loose ball on the edge of the box, but almost steps outside the area while holding onto it. After his team had worked so hard to get themselves back into this match, that would have been a horrendous error, but he just gets away with it.
AC Milan looks desperate to get themselves back ahead before the break, with Balotelli trying a long ball into the box for Robinho, but Brkic is able to get to it first.
HALF TIME: AC Milan 1-1 Udinese
The teams head into the break level, as a penalty inside the last five minutes of the half for the visitors cancels out an early strike from Mario Balotelli.
Mario Balotelli and Kaka proved a deadly combination early of for the Rossoneri, but the visitors never let them get too far ahead, and dominated the final 10 minutes of the half.
There are no replays or second legs at this stage of the competition, so there has to be a result tonight. Should the two sides still be drawing at full time, there'll be extra time and potentially penalties to decide who goes through to the semi-finals
If AC Milan can't regain their lead, there's not a great deal of fire power on their bench, with the majority of their top goalscorer already on the pitch, or not included in the squad. None of the subs have more than one goal in the league this season.
The players are making their way back out ready for the second half.
Well, Udinese are making their way back out. The home side are a little slower to return.
Oh good, here come the Rossoneri, clearly keen to make the most of their break.
Udinese get the game back underway.
The home side are dominating possession in the early minutes of this second half, but they struggle to get out of their own half. A long ball forward for Emanuelson eventually moves them into Udinese territory, but Allan Loureiro easily clears.
Robinho makes a good run from midfield, but can't get it through to Balotelli from the edge of the box.
Udinese are on the counter attack and Agyemang-Badu tries to cross it in for Fernandes, but there's too much on the delivery for the winger to control it, giving the hots the goal kick. It doesn't look like either side have quite settled since the restart.
BOOKING! Valter Birsa picks up a booking for a wild lunge into Fernandes, which leaves the Udinese man wincing somewhat.
Balotelli tries to create something from nothing in midfield, but loses out to Loureiro. The visitors go on the counter, but a well-timed challenge from Emanuelson ends the run.
Down the other end, Balotelli looks to create a chance for Birsa, chipping a high ball into the box for the striker, but he's unable to get a foot to it. Balotelli hasn't been as prolific in this half, but he's still pressing.
CHANCE! Fernandes plays the ball through for Muriel, but he spots Lazzari in space and sets him up with a back heel, but the winger's finish is saved by Abbiati.
CHANCE! After a slightly slow start to the second half, there's suddenly action at both ends as the hosts are back on the attack. A long ball in is initially saved by Brkic but he spills in right in front of Balorelli, but Agyemang-Badu is able to spare he keeper's blushes by getting it clear.
CHANCE! Muriel is on the ball again inside the AC Milan penalty area, but this time decides to keep it for himself. However, he takes a touch too many and loses the ball, allowing the home side the clear. It does feel like another goal is imminent, but it's anyone's guess who will get it.
BOOKING! De Sciglio is the latest player to be shown the yellow car after hacking down Gabriel Silva on the wing.
Balotelli is starting to look dangerous up front again, but the Udinese defenders are wise to him, and make sure he's closely marked, preventing him from having a shot of their goal.
SUB! The visitors make their first change of the match, replacing Bruno Fernandes with Roberto Pereyra. It looks like he's slotting up just behind Luis Muriel.
CHANCE! Pereyra almost makes an immediate impact, as Gabriel Silva crosses the ball in in his direction, but he can't keep his finish down, smashing it into the crowd.
CHANCE! Balotelli is starting to look frustrated at the lack of service, so he tries his look from range, forcing a save from Brkic.
BOOKING! Balotelli is on the attack again, and Danilo feels the need to bring him down just outside the box, picking up a booking, which will see him suspended for the next game.
CHANCE! Danilo's foul leaves AC Milan with a free kick from a dangerous spot. Balotelli decides to take it himself, and he hits it well, but Brkic is able to tip it over to deny the Italy international.
CHANCE! Pereyra and Muriel both miss golden opportunities for the visitors. The substitute has bags of space but scuffs his finish. Muriel collects it, but can't control the ball in time to get the shot away.
SUB! Luis Muriel's night is done. He's not long back from an injury and has certainly made an impact this evening. Nicolas Lopez takes his place.
GOAL! AC Milan 1-2 Udinese (Lopez)
What a magnificent finish from the young striker! He picks up the ball in midfield just a couple of minutes after coming off the bench, and has teammates ahead of him, but he spots Abbiati off his line and decides to take it on himself, sweetly hitting the 30-yard rocket to put the visitors ahead for the first time tonight. That really was a touch of class from the 20-year-old.
Udinese are looking to put the result beyond doubt, quickly applying pressure on the edge of the AC Milan box, but Silva's cross is turned away.
SUB! The home side bring on some fresh legs in the form of Keisuke Honda, who replaces Antonio Nocerino.
BOOKING! Honda makes his presence felt, but not it the way Clarence Seedorf would have been hoping, as he is shown a yellow card for a clumsy foul on Agyemang-Badu.
BOOKING! AC Milan are really letting their frustrations show now, with Mexes charging into Widmer near the corner flag. The defender may be lucky to still be on the pitch, I've seen reds given for a lot less.
SUB! Ignazio Abate will come on for the last few minutes in place of Emanuelson, who gave away the penalty that got Udinese back into this match.
AC Milan have seen very little of the ball since going behind, they've really let their heads drop! However, the introduction of a couple of fresh players seems to be lifting them a little now, with Honda trying to command the midfield and move the hosts towards the Udinese goal.
Honda launches the ball deep for De Sciglio, but the defender doesn't have the pace to chase it down.
CHANCE! Balotelli almost finds the target from close range, launching a rocket towards the Udinese goal, but Brkic just spots it at the last second and manages to make the save. There are three minutes of stoppage time to be played.
SUB! Lazzari will go off a few seconds early for the visitors, with Giampiero Pinzi coming on for a late cameo.
Honda tries to deliver a cross to give the home side one last chance, but Brkic comfortably collects.
FULL-TIME: AC Milan 1-2 Udinese
Udinese are through to the semi-finals of the Coppa Italia after coming from behind at the San Siro to beat AC Milan. It's a remarkable achievement by the Serie A strugglers.
In the opening 15 minutes of the match, it looked like Udinese were going to be outclassed, but the visitors dug deep, and dominated the second half to seal a deserving win.
That's all from this match, but stick around to read reports from all of tonight's matches across Europe, and join us again at the weekend when both of these clubs will be back in action in the league. Until then, thanks for joining me this evening, goodbye.