Juventus and Milan join champions Inter and Atalanta in the Champions League next season after a dramatic final day in Serie A.
Milan and Napoli went into this final matchday knowing that they would both be guaranteed Champions League football if they beat Atalanta and Hellas Verona, respectively.
Juventus, meanwhile, could only finish in the top four by beating Bologna away and hoping that either Milan or Napoli slipped up.
This means that Juventus sneak into the Champions League football, narrowly avoiding a sporting and financial disaster.
Champions Inter finished the season in style by thrashing Udinese 5-1 at San Siro in the early kick-off, despite fielding a weakened side.
Ashley Young scored on his final appearance for the club, with a Christian Eriksen free-kick, Lautaro Martinez penalty, and second half strikes from Ivan Perisic and Romelu Lukaku adding gloss onto the scoreline.
Lazio had already clinched the second Europa League qualification birth in sixth position but ended the season with a 2-0 defeat to Sassuolo. Girogos Kyriakopoulos and a Domenico Berardi penalty proved the difference.
This result was not enough to take Sassuolo into the Europa Conference League place after Roma fought back from two goals down to draw 2-2 at Spezia. Henrikh Mkhitaryan scored with five minutes remaining to ensure Jose Mourinho's Roma will be in Europe next season.
The relegation spots were already decided, with Benevento (who drew 1-1 at Torino), Crotone and Parma being demoted to Serie B.
In the Saturday matches, veteran striker Fabio Quagliarella completed another fine season by scoring in a 3-0 win for Sampdoria over Parma.
Eldor Shomurudov scored the winner for Genoa at Cagliari, while Crotone and Fiorentina played out a bore draw.
View our detailed player statistics for Serie A at the link below.