Internazionale claimed the Serie A title, while Parma and Empoli suffered relegation and Milan missed out on the UEFA Champions League on a thrilling final day of the season.
Zlatan Ibrahimovic inspired Inter to their third successive Serie A crown as he came off the bench to score both goals in a 2-0 win over Parma to condemn the home side to relegation.
The Swedish international, who has only recently returned from injury, was introduced on 51 minutes and he broke the deadlock just past the hour mark when he scored from the edge of the box.
Ibrahimovic made the game safe 11 minutes from time when he volleyed home Maicon's cross to ensure Roberto Mancini's gamble on his fitness paid off.
Catania picked up a 1-1 draw with Roma to secure their survival as the capital side missed out on the title.
Mirko Vucinic gave Roma a flying start with a fine solo goal after just eight minutes, but Jorge Martinez's 85th minute equaliser earned Catania a precious point to ensure another season of top-flight football next season.
Fiorentina claimed fourth spot and the final Champions League place at the expense of Milan following a 1-0 win at Torino.
Pablo Osvaldo scored the only goal of the game 15 minutes from time to secure the Viola the lucrative fourth spot.
Milan came from behind to beat Udinese 4-1, but they will have to make do with a Uefa Cup spot as a result of Fiorentina's success.
Giandomenico Mesto gave Udinese a shock lead on 32 minutes, but Milan roared back at the start of second half as goals from Alexandre Pato (48) and Filippo Inzaghi (59) turned the game on its head.
Veteran Brazilan Cafu got his name on the scoresheet on 79 minutes and Clarence Seedorf added a fourth two minutes from time, but it mattered little to Milan as they missed out on fourth spot.
Empoli suffered relegation despite a 2-1 win over already doomed Livorno.
Antonio Busce gave the home side the perfect start with the opener after just 10 minutes and Luca Saudati doubled the lead on 55 minutes.
Alessandro Diamanti pulled a goal back for Livorno seven minutes from time, but the win could not save Empoli from the drop.
Atalanta secured a top half finish in the table with a 2-0 victory over Genoa.
Sergio Floccari fired Atalanta in front on 32 minutes and things got worse for Genoa when Danilo Sacramento was sent off on 66 minutes.
Michele Marconi wrapped up the win for the home side two minutes into injury time after Omas Milanetto was sent off.
Lazio ended the season with a 2-1 win over Napoli at the Stadio Olimpico.
Tommaso Rocchi gave Lazio the lead on 14 minutes and Fabio Firmani doubled the advantage on 71 minutes.
Maurizio Domizzi reduced the arrears eight minutes from time, but Lazio held on for the points.
Siena and Palermo shared the spoils after a 2-2 draw.
Former Middlesbrough striker Massimo Maccarone gave Siena a flying start with the opener after just two minutes, but Bosko Jankovic drew Palermo level on 24 minutes.
Fabrizio Miccoli fired Palermo in front six minutes later only for Maccarone to earn Siena a point with his second of the game just before the hour mark.
Nicola Amoruso's late penalty secured Reggina a 2-2 draw at Cagliari.
Joaquin Larrivey gave Cagliari the lead on 18 minutes, but Amoruso drew Reggina level on 55 minutes.
Paolo Bianco restored Cagliari's lead on 81 minutes only for Amoruso's 86th minute penalty to give Reggina a point.
Click on fixture for full match summary