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'
|Mancini: Icardi is Inter´s captain|
|Lucescu: Witsel wants to leave|
|Balotelli unwanted by Besiktas coach|
|Conte: Chelsea will struggle again if there´s no improvement|
|Rashford wants to learn from Ibrahimovic|
|NYC star Lampard revels in historic hat-trick|
|Milner willing to cover at full-back|
|Gameiro: Griezmann and I will score lots of goals|
|Wenger: I won´t buy for the sake of it|
|Inter 1 Bayern Munich 4: Hat-trick hero Green enjoys happy homecoming|
|Ibrahimovic keen for ´interesting´ Pogba deal|
|Conte unsure over Costa´s Chelsea future|
|Zidane: Morata will remain a Madrid player|
|Sergi Roberto ´more than a player´ - Luis Enrique|
|New York City 5 Colorado Rapids 1: Lampard hits hat-trick in MLS rout|
|Mourinho hints at United future for Mata and Fellaini|
|Real Madrid 3 Chelsea 2: Hazard show too late for Blues|
|Penalty woes for Everton, Gray treble inspires Burnley at Ibrox|
|Atleti to present Gameiro on Sunday|
|Ibrahimovic nets debut goal as United put five past Galatasaray|
|Barcelona 3 Celtic 1: Messi, Suarez in action as Catalans cruise to victory|
|WATCH: Zlatan open his Man Utd account with acrobatic goal|
|Alba: It would be foolish not to respect Ronaldo, but Messi on another level|
|Lahm hails ´sensational guy´ Schweinsteiger following Germany retirement|
|Stones´ professionalism praised amid City reports|
|Roma suffer Rui blow|
|Inter complete Ansaldi move|
|Nainggolan confident of Roma challenge despite Juve investment|
|Rummenigge tells off Ribery over Guardiola dig|
|Meli makes Sporting loan switch|
|No repeat of slow start, vows Allegri|
|Mourinho desperately wanted Embolo at Manchester United, claims Heidel|
|Dembele can do anything - Tuchel|
|Pogba arrival would boost Rooney - Yorke|
|Ben Yedder makes Sevilla move|
|De Jong signs PSV renewal until 2020|
|Kovacic to fight for his place at Real Madrid|
|Sturridge out to improve goals-per-game ratio|
|Mourinho hails ´humble´ Ibrahimovic ahead of United debut|
|Schweinsteiger will not leave Manchester United for Bundesliga return - Rummenigge|
|Benatia on target again in Juve win|
|Atletico set to sign Gameiro|
|Zenga appointed Wolves boss|
|Flattered Verratti not seeking Madrid move|
|Ancelotti: Growing transfer fees nothing special|
|Eriksson: Ibrahimovic and Mourinho combo enough to win Premier League|
|Meunier: I could not reject PSG|
|Klopp: I didn´t want Mkhitaryan|
|Anything could happen before transfer window shuts - Zidane|
|Montoya leaves Barca base, nears Valencia switch|
|Wijnaldum: I´m happy to play anywhere|
|Klopp backs Mignolet after Karius injury|
|Liverpool suffer Karius injury blow|
|Ranieri confident Mahrez will stay as contract talks continue|
|Emery confirms interest in Jese|
|Higuain´s Juventus move not about money - agent|
|Wolves sack head coach Jackett|
|Zidane: Ronaldo unlikely to play Madrid La Liga opener|
|Ibrahimovic: United fans are waiting for me|
|Deulofeu shines for Everton, Cook opens Bournemouth account|
|Higuain out to emulate Del Piero|
|Kante does his talking on the pitch - Conte|
|Mourinho explains Fosu-Mensah snub|
|Klopp: No more unwanted players at Liverpool|
|Inter want more than €60m for Icardi - Thohir|
|Leicester can replace Kante - Ranieri|
|Lazio complete Wallace signing|
|Gueye set to join Everton, confirms Di Matteo|
|Tuchel: Transfer market has gone cash crazy|
|Leicester hand King new four-year deal|
|No deal done for Pogba, says Raiola|
|Rooney: Mourinho impact already huge|
|Lafferty hit with FA betting charge|
|Top-four finish never enough for Arsenal, insists Wenger|
|Partey hoping to make his mark on Atletico squad|
|Ibrahimovic in, Schweinsteiger out as United head for Galatasaray friendly|
|Vietto set for Sevilla after completing medical|
|I rejected Besiktas to fight for Barcelona spot, reveals Mathieu|
|De Laurentiis fumes at Higuain´s ´lack of respect´|
|Promising Janssen boosts Tottenham´s title hopes|
|Besiktas sign Adriano on three-year contract|
|Tottenham 0 Atletico Madrid 1: Godin grabs the winner|
|Gomis completes Marseille loan move|
|Iniesta surprised at Casillas-Del Bosque spat|
|New Juve signings do not guarantee success - Allegri|
|New Juve signings do not guarantee success - Allegri|
|Middlesbrough snap up goalkeeper Guzan|
|Guardiola still loves Ribery despite jibes|
|West Ham worry over Tore injury|
|Serie A could be another one-horse race, says Eriksson|
|Schweinsteiger retires from Germany duty|
|Iniesta welcomes Barca´s midfield competition|
|Drogba: No luck in Arsenal scoring record|
|Wenger seeks ´experienced´ striker to bolster Arsenal attack|
|Eriksson and Shanghai SIPG still fighting|
|MLS All-Stars 1 Arsenal 2: Premier League giants win late as Xhaka makes debut|
|Conte: I want aggression and intensity|
|Wimmer backs physical Janssen for Tottenham success|
|Klopp: I wouldn´t spend £100m on one player|