Mario Balotelli and Philippe Mexes scored late on at Siena as Milan came from behind to secure a place in the UEFA Champions League.
Balotelli’s 84th-minute penalty had cancelled out Claudio Terzi’s first-half header, before Mexes netted a crucial winner three minutes from time.
A hard-fought second half saw both sides reduced to 10 men in the space of just a few minutes after Massimo Ambrosini and Christian Terlizzi were both sent off for second bookable offences.
But it was the late goals that made all the headlines as Milan guaranteed their place at European football's top table in dramatic circumstances.
Milan came into the game needing to win in order to beat Fiorentina to the final UEFA Champions League place, and they made five changes to the team that played out a controversial 0-0 draw with Roma last week.
Sulley Muntari's bizarre red card in that game meant that he was suspended, while Ignazio Abate was preferred ahead of Kevin Constant.
Robinho, Antonio Nocerino, Riccardo Montolivo and M'Baye Niang were all handed starts.
Siena, whose relegation was confirmed with a 2-1 loss away to Napoli, welcomed back Alessandro Rosina.
Milan began the game with an expected level of urgency, creating a flurry of chances during the opening exchanges.
Balotelli was the first to test Gianluca Pegolo in the Siena goal, seeing his stinging long-range effort tipped over the crossbar.
A few moments later, Cristian Zapata saw a header cleared off the line before Brazilian Robinho was unlucky not to break the deadlock when he saw his vicious swerving shot palmed away by Pegolo.
And Milan were made to pay for their profligacy just before the half-hour mark when the hosts took an unlikely lead through Terzi.
A pinpoint free-kick from Rosina found the head of the defender, who took advantage of some slack Milan marking to direct his header past Chrisitan Abbiati.
Milan nearly conjured up the perfect response just two minutes later, when Balotelli crashed a shot onto the crossbar.
And the Italian was involved again just before half-time, forcing a decent save from Pegolo as Siena weathered the Milan storm.
The second half began in similarly frustrating circumstances for Milan, as they struggled to find a decisive final ball. And 10 minutes later they were down to 10 men when Ambrosini slid in rashly on Adrian Callelo and was shown a second yellow card.
The numbers were even soon after, though, as the home side were also down to 10 men - Terlizzi given his marching orders for jumping into a challenge with Balotelli.
Balotelli made his mark in some style 10 minutes from time when he was brought down in the box by Felipe to give Milan hope.
The Italian brushed himself down to calmly slot home the resulting spot-kick and the comeback was on.
Then, with just two minutes to go, Mexes found himself on the end of a Montolivo cross to slot home the dramatic winner.
|88||C. Terlizzi||45' 70'|
|14||F. Della Rocca|
|Coach: G. Iachini|
for A. Rosina 61'
for I. Emeghara 75'
for M. Rubin 89'
|Sevilla reject director´s request to leave|
|Austria 2 Malta 1: Arnautovic and Schopf seal warm-up win|
|Republic of Ireland 1 Belarus 2: O´Neill´s side beaten in final Euros warm-up|
|Argentina not pulling out of Copa America - AFA chief|
|Halilovic left out of final Croatia squad|
|Eder included in Italy squad as Jorginho misses out|
|Luxembourg 1 Nigeria 3: Iheanacho strikes again for Super Eagles|
|Stuttgart midfielder Maxim among five cut from Romania´s Euro 2016 squad|
|Buffon: Italy not among Euro 2016 favourites|
|Lucas replaces injured Rafinha in Brazil Copa squad|
|PSG confirm Aurier will face trial after police altercation|
|Rosicky included in final Czech Republic squad for Euro 2016|
|Ireland 1-2 Belarus: O'Neill's men's Euro 2016 preparations take a blow|
|Reus snub ´unbelievably difficult´ - Howedes|
|AFA holding meeting to discuss Copa withdrawal|
|England v Portugal: Santos confident despite Ronaldo absence|
|Isco, Saul out of Spain Euro 2016 squad|
|Florentino Perez touts revamp of Champions League format|
|Hazard headlines Belgium squad for Euro 2016|
|Zinchenko handed Ukraine call-up|
|Morata: Improving on Spain´s Euro feats is impossible|
|Injured duo return to make Hungary Euro 2016 squad|
|Mourinho: I will not be distracted by Guardiola battle|
|Ledley passed fit for Wales Euro 2016 squad|
|Turan, Sahin and Calhanoglu lead Turkey´s Euro 2016 squad|
|Shevchenko tells AC Milan to sign Yarmolenko|
|Rashford, Sturridge make England´s Euro 2016 squad|
|Schweinsteiger set for return to Germany training|
|Pato: I expected more games at Chelsea|
|Real Madrid may go for Pogba - Perez|
|World Cup Qualifying Review: New Zealand march on|
|Carvajal furious at missing Euro 2016|
|Mkhitaryan in no rush to sign Borussia Dortmund renewal|
|Pele to auction off memorabilia|
|Reus left out of Germany´s Euro 2016 squad|
|Blind determined to fight for his place under Mourinho|
|Aulas open to PSG bid for Lacazette|
|Giroud does not understand France booing|
|Four places up for grabs as Del Bosque closes on final Spain squad|
|Messi tax trial begins in Barcelona|
|Hart: England can be surprise package at Euro 2016|
|Ancelotti will not push out Gotze - Khedira|
|Ibrahimovic hints at Malmo return|
|Depay not blaming Van Gaal for his Manchester United struggles|
|Deschamps unhappy with ´unfair´ Giroud boos|
|Juventus adamant no Olympics for Dybala|
|Navas ruled out of Copa America|
|Iniesta: Madrid will be disappointed not to win La Liga|
|Messi on track in recovery|
|Morata: I want to succeed at Madrid, but would consider Premier League|
|Lewandowski headlines expected Poland squad|
|France boss Deschamps ´surprised´ by Cameroon performance|
|Payet: I´m expected to score every free-kick now|
|Bashful Rami admits to mistakes against Cameroon|
|Peseiro to leave Porto|
|France 3 Cameroon 2: Payet stunner snatches victory|
|Laxalt for Rodriguez in Uruguay´s Copa squad|
|Guingamp unveil Kombouare as new head coach|
|Real Madrid confirm Achilles problem for Navas|
|Wilmots´ woes worsen as Belgium lose Lombaerts, Boyata|
|Marotta: Juventus optimistic on Dani Alves deal|
|Berlusconi: I courted Guardiola at Barcelona|
|Berlusconi: Donnarumma not for sale, even for €80m|
|Ginola back at home following heart surgery|
|Departing City boss Pellegrini could quit management|
|Ayestaran prepared to fight to keep Gomes at Valencia|
|Sagna hopes to remain at City under Guardiola|
|France 3-2 Cameroon: Payet nets dramatic late winner for Euro 2016 hosts|
|Roma complete permanent Rudiger deal|
|Senderos left out of final Switzerland squad for Euro 2016|
|AFC Wimbledon 2 Plymouth Argyle 0: Dons reach the third tier|
|Spain v South Korea: Pedro wants goalscoring momentum|
|Reus demands Dortmund transfers|
|Poland v Netherlands: Lewandowski out to make the most of set pieces|
|Low still waiting on Germany fitness news|
|Juanfran promises Champions League success in heartfelt letter to fans|
|Belgium v Finland: Hazard backs squad to cope without Kompany|
|Skriniar joins Skrtel, Hamsik in Slovakia squad|
|Scholl: Gotze and Lewandowski dealings strange|
|Terry: Chelsea must learn from mistakes and fight for trophies again|
|Belgium v Finland: Hazard backs squad to cope without Kompany|
|Injury comeback on track, says Germany´s Khedira|
|Victor Sanchez sacked by Depor|
|Rashford signs Manchester United renewal|
|Sturridge resumes England training|
|Pellegrini rues decision to go public with Guardiola appointment|
|Luxembourg v Nigeria: Yusuf set for latest audition|
|Icardi, Perisic not for sale at any price - Inter|
|Carvajal to miss Euro 2016, replaced by Bellerin|
|Terry certain of Mourinho success at Manchester United|
|Pirlo not bitter towards Conte over Euro 2016 snub|
|Dortmund rule out Sokratis exit amid Atletico Madrid links|
|Barcelona revert to tradition with new kit|
|Robben and Ribery in line for Bayern renewals|
|King backs Wales to ´do a Leicester´ at Euro 2016|
|Deschamps: Zidane´s Champions League win is amazing|
|Pulido rescued by Mexican authorities|
|Alaves secure La Liga promotion|
|Gabriel´s childhood dream becomes a reality|
|Mexico v Chile: Vidal set for return|
|Boateng left ´sad´ after politician´s controversial comments|
|Mooy undecided on future|
|Gotze not concentrated on club future|
|Panama 0 Brazil 2: Jonas breaks goalscoring drought, Gabriel nets on debut|
|Postecoglou pleased with additions ahead of Greece clashes|
|Panama 0-2 Brazil: Jonas breaks goalscoring drought, Gabriel nets on debut|
|Ter Stegen laments ´unlucky´ error in Germany defeat|
|Santos hoping for Portugal improvement ahead of Euro 2016|
|Ronaldo dismisses critics after Champions League win|
|Uruguayan side complete Leicester-style championship win|
|New York City 2 Orlando City 2: Molino salvages late point|
|Colombia 3 Haiti 1: Cuadrado helps Pekerman´s side to win|
|Strachan hits out at wayward passing|
|Conte focusing on positives after Scotland victory|
|Colombia 3-1 Haiti: Cuadrado helps Pekerman's side to win|