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'
|Icardi open to new Inter contract|
|Mazzarri wants Inter perspective|
|Ideye close to Albion return|
|Ogunode doubles up in Incheon|
|K. League Review: Jeonbuk extend lead as Pohang lose|
|Western Sydney Wanderers 2-0 Seoul (agg 2-0): Poljak and Cole fire Australians to final|
|Zamora impressed by Vargas|
|Benteke return has boosted Villa – Weimann|
|Muniesa determined to keep starting spot|
|Diaby prepared to adapt|
|Players to blame, not Pardew - Williamson|
|Dyche looking for squad to step up|
|Havenaar and Kagawa earn Japan recalls|
|Relieved Terry glad to bounce back|
|Martinez backs Besic to shine|
|We paid dearly - Iniesta|
|Blanc hails PSG spirit|
|Tempo not good enough for Milner|
|Rodgers: Sturridge not fit for England|
|Prandelli urges daring approach|
|Jesus bullish ahead of Leverkusen match|
|Bundesliga Preview: Hamburg´s task gets no easier, Bayern battle Hannover|
|Hummels committed to Dortmund|
|Sao Paulo 1 Huachipato 0: Brazilians claim first-leg honours|
|Premier League superior to Serie A - Isla|
|Ferdinand taunts stay-away City fans|
|Simundza hails Maribor effort|
|Yermakovich overjoyed with BATE win|
|We targeted Ajax in the air - Donis|
|Gago among three Argentina inclusions|
|Pellegrini rues poor City showing|
|Aduriz admits Bilbao not good enough|
|Lucescu can´t hide Shakhtar despair|
|De Boer frustrated at ´nothing´ penalty|
|Winning margin not important - Mourinho|
|Maicon disappointed at dropping points|
|Luis Enrique upbeat despite defeat|
|Draw would have been fair - Silva|
|Record-breaker Totti rues Manchester misses|
|Keller: My Schalke players are shattered|
|Championship Review: Norwich beaten, McKinlay off to winning start|
|Champions League centurion Terry proud of achievement|
|Luiz hopes Barca win can kickstart PSG season|
|Crewe Alexandra 0 Notts County 3: Cassidy brace sinks basement boys|
|Aberdeen 2 St Mirren 2: Struggling visitors fight back|
|Shakhtar Donetsk 2 Porto 2: Martinez´s late double salvages dramatic draw|
|Slutsky shrugs off possession statistic|
|Manchester City 1 Roma 1: Evergreen Totti pegs back City|
|APOEL 1 Ajax 1: Manduca rescues point for hosts|
|Schalke 1 Maribor 1: Slovenian underdogs hold firm in Germany|
|BATE 2 Athletic Bilbao 1: Hosts secure first victory over Spanish side|
|Paris Saint-Germain 3 Barcelona 2: Luis Enrique tastes defeat as Xavi makes history|
|Sporting Lisbon 0 Chelsea 1: Matic returns to haunt old rivals|
|K. League Preview: Jeonbuk´s leadership under threat|
|Inter v Qarabag: Mazzarri looking for response|
|Guardiola unimpressed by empty Arena Khimki|
|Krasnodar v Everton: Martinez´s men may be handed triple boost|
|Arabian Gulf League Review: Al Wahda held, Al Shabab win again|
|Schmidt: Leverkusen must match Benfica aggression|
|CSKA Moscow 0 Bayern Munich 1: Century up for German giants|
|Al Ain 2 Al Hilal 1 (agg 2-4): Saudis make final as Gyan sees red|
|Romulo sidelined following hernia surgery|
|Sturridge to miss Basle clash|
|Everton pessimistic over Mirallas injury|
|UEFA Europa League Preview: Mazzarri demands Inter fight, Hecking eyes improvement|
|Ancelotti: Ronaldo an example for everyone|
|Evans returns to Northern Ireland squad|
|Simeone earmarks ´extraordinary´ Tevez as Juve´s dangerman|
|Kitchee 1 Erbil 2 (agg 2-3): Early goals see visitors through|
|Herrera sustains fractured rib|
|Tottenham v Besiktas: Kaboul calling for more of the same|
|Scotland call up debutants Gauld and May|
|Ramsey out for up to four weeks|
|Giroud deal done - Wenger|
|Hull City challenge FA over name change ruling|
|Rooney impressed with McNair|
|Luiz: I nearly joined Barca|
|Persipura 0 Al Qadsia 6 (agg 2-10): Visitors coast into final|
|Blanc wary of ´exceptional´ Messi|
|Dawson extends Albion deal|
|Mourinho open to move within Premier League|
|Top four the priority - Van Persie|
|Liga MX Preview: Queretaro braced for Atlas challenge|
|Copa Sudamericana Preview: Sao Paulo out to arrest slump|
|MLS Preview: DC United ready to grind, Revolution host Crew|
|Argentine Primera Division Review: Newell´s unbeaten run ends|
|Mignolet shrugs Valdes, Liverpool link|
|Neville blames transfers for Newcastle form|
|Mathieu applauds Messi, Neymar partnership|
|Mignolet must improve - Carragher|
|Cole hails Lampard|
|Villa may miss opener in Australia|
|Hughes thrilled with ´deserved´ home win|
|Pardew fears for future|
|Serie A Review: Djordjevic treble fires Lazio to Palermo win|
|Pardew facing ´serious conversations´ with Ashley|
|Pacos de Ferreira 2 Belenenses 0: Hosts off the mark on home turf|
|Stoke City 1 Newcastle United 0: Crouch deepens gloom for visitors|
|Garcia embracing underdogs tag|
|Turkish Super Lig Review: Gekas double sinks Fenerbahce|
|Bayer Leverkusen v Benfica: Schmidt´s men seek goalscoring touch|
|Costa to start against Sporting|
|Russian Premier League Review: CSKA edge Ural thriller to close gap on Zenit|
|Ludogorets v Real Madrid: Holders out to avoid slip-up in Sofia|
|Malmo v Olympiacos: Roberto insists no hangover for visitors|
|Championship Preview: McKinlay in at Watford, Norwich host unbeaten Charlton|
|Luis Enrique expecting stern PSG test|
|Atletico Madrid v Juventus: Opening defeat puts pressure on hosts|
|Bruce staying positive despite winless run|
|Police investigating Van Dijk racism claims|
|Hazard dreaming of Champions League glory|
|Santos goes to Goa|
|Double delight for Al-Garni|
|Basel v Liverpool: Rodgers hopeful on Sturridge return|
|Arsenal v Galatasaray: Wenger facing selection headache|
|Blanc calling on others to cover for Ibrahimovic absence|
|Zenit v Monaco: Jardim sticking with style|
|Ibrahimovic out of Barca clash|
|Lucescu happy to host Porto in Lviv|
|Hart looking to bounce back against Roma|
|McKinlay replaces Garcia at Watford|
|Anderlecht v Borussia Dortmund: Hasi expecting tough test|
|Sunderland not panicking, says Jones|
|Pelle hopes for Italy call|
|Slutsky well aware of Bayern strength|
|Guardiola entering unchartered territory|
|Arsenal have a point to prove against Chelsea - Oxlade-Chamberlain|
|Irvine hails Lescott impact|
|Carlos backs Ancelotti to defend crown|
|Montoya replaces injured Douglas|
|Pearce wants permanent Hunt deal|
|Nolan targets top 10|
|Mangala reaction pleases Kompany|
|Dyche keen to emulate West Brom example|
|Irvine happy to see Hawthorns rocking again|
|San Siro ´isn´t enough anymore´ for Milan|
|Redknapp calls for temporary subs|
|Western Sydney Wanderers v Seoul: A-League side look to continue dream run|
|Hazard rules out PSG switch|
|MLS Review: Keane scores twice in Galaxy romp|
|Costa Rican Primera Division Review: Five-star Alajuelense extend streak|
|Colombian Primera A Review: Medellin held, Santa Fe go top|
|Liga del Futbol Profesional Boliviano Review: Wilstermann remain top|
|Napoli rewarded for team effort - Benitez|
|Liga MX Review: Layun scores four, Monterrey leapfrog Atlas|
|Paraguayan Division Profesional Review: 15-year-old Diaz is Cerro´s hero|
|Uruguayan Primera Division Review: Racing leave it late, Recoba scores from a corner|
|Brazilian Serie A Review: Gremio´s resurgence continues|
|Venezuelan Primera Division Review: Leaders held, Tucanes win again|
|Referee got it right - Rooney|
|Peruvian Primera Division Review: Melgar stay perfect|
|Bielsa: Marseille always in control|
|Newcastle will offer Tiote new deal - Pardew|
|Shakhtar Donetsk v Porto: Lucescu looks to maintain impressive home record|
|Ligue 1 Review: Marseille, Bordeaux continue fine starts|