Norge hade greppet om gruppen inför de två avslutande matcherna.
Men förlust i Slovenien följdes upp med en ny motgång på Ullevaal i Oslo.
Och gruppsegern gled Erling Braut Haaland och hans Norge ur händerna. Laget hade behövt en poäng i avslutningen för att vinna gruppen.
Haaland hade ett bra läge i början av matchen, men en serbisk forcering i slutet av första halvlek gav ledningsmål för gästerna när Juventusforwarden Dusan Vlahovic hittade rätt från nära håll.
Nio minuter in i andra halvlek slog sedan målmaskinen från Fulham, Aleksandar Mitrovic, till och sköt 2–0 alldeles intill norske målvakten Ørjan Nylands högra stolpe.
Det var 28-årige Mitrovics 50:e landslagsmål och det sjätte i Nations League, bäst tillsammans med Haaland.
Mitrovic gjorde ju hattrick när Serbien körde över Sverige i lördags med 4–1.
I A-divisionen såg Portugal länge ut att ta den nödvändiga poäng som skulle säkra gruppsegern i grupp 2 hemma mot Spanien.
Men i den 88:e minuten gav den spanska dominansen resultat när Alvaro Morata från nära håll kunde göra matchens enda mål, framnickad av Nico Williams.
Därmed blir det Spanien, Kroatien, Italien och Nederländerna som går vidare till slutspelet i juni nästa år.