Inför avspark stod Milan och Napoli på 76 poäng vardera medan Juventus skuggade på 75 poäng. Bara två av lagen kunde gå till Champions League nästa säsong.
Juventus tog ledningen tidigt i sitt möte med Bologna genom Federico Chiesa. Efter en knapp halvtimmes spel utökade Juventus ledningen. Paulo Dybala stod för en uppsnurrning av Bologna-försvaret, varpå han serverade Alvaro Morata med en läcker chipp. Morata kunde enkelt sätta bollen i mål till 2-0. Strax innan paus kunde Juve även sätta 3-0, då Adrien Rabiot avslutade framspelad av Dejan Kulusevski.
Milan tog ledningen mot Atalanta strax före paus på straff efter att Theo Hernandez gått omkull i straffområdet. Franck Kessie gjorde inget misstag från elva meter när han satte 1-0 för "Rossoneri".
När andra halvlek inleddes kunde Juventus omgående utöka till 4-0 genom Alvaro Morata. Anfallaren vinkades först av för offside, men efter att VAR sagt sitt godkändes målet.
En dryg timme in i den sista omgången hände det som absolut inte fick ske för Juventus. Napoli tog ledningen hemma mot Hellas Verona - samtidigt som Milan fortsatt ledde med 1-0 mot Atalanta. Det betydde att Juventus där och då var utanför Champions League-platserna.
Men det skulle snabbt vända tillbaka. Med 20 minuter kvar kvitterade Hellas Verona mot Napoli - och Juventus var åter tillbaka på den sista CL-platsen.
Att Bologna kvitterade med några minuter kvar påverkade inte utgången för hur Europa-platserna skulle fördelas. Och på tilläggstid kunde Milan fastställa slutresultatet, 2-0, mot Atalanta. Även det från straffpunkten.
Napoli lyckades inte få till ett segermål, trots ett jätteläge på stopptid, och besvikelsen var stor i Neapel. Desto större glädje var det bland Milan- och Juventus-spelarna som kunde fira att de kommer spela i Champions League nästa säsong.
Bologna: Skorupski - Tomiyasu, Medel, Soumaoro, De Silvestri - Schouten, Svanberg - Skov Olsen, Vignato, Barrow - Palacio
Juventus: Szczesny - Cuadrado, De Ligt, Chiellini, Alex Sandro - Kulusevski, Danilo, Rabiot, Chiesa - Dybala, Morata
Atalanta: Gollini - Toloi, Romero, Djimsiti - Maehle, De Roon, Freuler, Gosens - Malinovskyi - Pessina, Duvan Zapata
Milan: Donnarumma - Calabria, Kjaer, Tomori, Theo Hernandez - Bennacer, Kessie - Saelemaekers, Brahim Diaz, Calhanoglu - Leao
Napoli: Meret - Di Lorenzo, Manolas, Rrahmani, Hysaj - Fabian Ruiz, Bakayoko - Lozano, Zielinski, Insigne - Osimhen
Hellas Verona: Pandur -Ceccherini, Gunter, Dimarco - Faraoni, Dawidowicz, Ilic, Lazovic - Bessa, Zaccagni - Kalinic