Milinković-Savić doorliep de jeugdopleiding van FK Vojvodina. Hij tekende hier op 26 december 2012 zijn eerste profcontract en debuteerde in 2013 in het eerste team, in een competitiewedstrijd tegen Jagodina. Hij maakte op 9 maart 2014 zijn eerste doelpunt, uit tegen Spartak Subotica. In zijn eerste seizoen in de hoofdmacht kwam Milinković-Savić tot drie goals in dertien wedstrijden. Hij won op 7 mei 2014 met Vojvodina de Beker van Servië door in de finale met 2–0 van Jagodina te winnen.
KRC Genk
Milinković-Savić tekende op 18 juni 2014 een vijfjarig contract bij KRC Genk, waar hij rugnummer 20 kreeg.[1] Hiervoor debuteerde hij op 2 augustus 2014 in de Eerste klasse, uit tegen Cercle Brugge. Hij kwam na 82 minuten in het veld voor Julien Gorius. Zijn eerste goal voor Genk maakte Milinković-Savić in een wedstrijd tegen Sporting Lokeren (1–1). Na de winterstop kreeg hij steeds meer speeltijd. In het seizoen 2014/15 speelde hij in totaal 24 wedstrijden, waarin hij vijfmaal trefzeker was.
SS Lazio
Na zijn terugkeer van het WK –20 van 2015 tekende Milinković-Savić in augustus 2015 bij SS Lazio. Dat betaalde circa 10 miljoen euro voor hem aan KRC Genk.[2] Hij maakte op 18 augustus 2015 zijn debuut voor Lazio, in de play-offs voor de Champions League tegen Bayer Leverkusen. Hij viel die dag in voor Ogenyi Onazi. Dit was ook zijn eerste internationale clubwedstrijd. Zijn ploeggenoten en hij kwamen niet voorbij de Duitsers. Vier dagen later maakte hij zijn Serie A-debuut, tegen Bologna. Dit deed hij door na een uur Senad Lulić te vervangen. Milinković-Savić was op 17 september 2015 voor het eerst trefzeker voor Lazio, in de groepsfase van de Europa League tegen Dnipro. In de Serie A maakte hij op 9 januari 2016 zijn eerste doelpunt, tijdens een 1–3 overwinning op Fiorentina. In zijn eerste seizoen bij Lazio speelde Milinković-Savić in alle competities 35 wedstrijden, waarin hij drie doelpunten scoorde. In zijn tweede seizoen bij Lazio speelde hij 34 competitiewedstrijden en was hij goed voor vier goals. Lazio verloor op 17 mei 2017 de finale van de Coppa Italia met 2–0. Op weg naar deze finale scoorde hij driemaal. Milinković-Savić won op 13 augustus 2017 voor het eerst een prijs met Lazio. Zijn ploeggenoten en hij wonnen in de strijd om de Supercoppa met 2–3 van Juventus.
Milinković-Savić werd in 2017 in verband gebracht met een overstap naar Juventus, Manchester City en Manchester United.[3] Tot een transfer kwam het niet. Lazio bereikte de kwartfinale van de Europa League 2017/18, waarin RB Salzburg te sterk bleek. In de halve finale van de Coppa Italia van datzelfde seizoen volgde er na een 0–0 gelijkspel over twee wedstrijden een strafschoppenserie. Milinković-Savić was de tweede van zeven strafschoppennemers van Lazio en miste. De strafschoppenreeks werd verloren. In de Serie A van 2017/18 verloren Milinković-Savić en zijn teamgenoten op de laatste speeldag een Champions League-ticket tegen directe concurrent Internazionale. Dit seizoen zorgde de Servische middenvelder voor twaalf competitiedoelpunten. Milinković-Savić verlengde op 1 oktober 2018 zijn contract bij Lazio tot 2023.[4] Hij was op 15 mei 2019 trefzeker in de finale van de Coppa Italia tegen Atalanta Bergamo. Lazio won de wedstrijd met 0–2, waardoor het voor het eerst in zes jaar de Italiaanse beker won. Milinković-Savić werd in 2018/19 zevende met Lazio en na afloop van het seizoen zelf verkozen tot Middenvelder van het seizoen van de Italiaanse competitie.[5] Hij won op 22 december 2019 zijn tweede Supercoppa met Lazio door middel van een 1–3 overwinning op Juventus. Hij gaf zelf de assist bij het openingsdoelpunt van Luis Alberto. Milinković-Savić werd in 2019/20 vierde met Lazio. Hierdoor mocht hij in 2020/21 voor het eerst in zijn carrière aantreden in de Champions League. Zijn ploeggenoten en hij werden tweede in een poule met Borussia Dortmund, Club Brugge en Zenit Sint-Petersburg en verloren in de achtste finale van Bayern München.
Al-Hilal
Milinković-Savić speelde uiteindelijk acht seizoenen voor Lazio. Hij tekende in juli 2023 vervolgens voor drie jaar bij Al-Hilal. Dat betaalde circa 40 miljoen euro voor hem aan Lazio.[6] Met zijn overstap was Milinković-Savić een van tal van voetballers die in de zomer van 2023 van een Europese competitie naar Saoedi-Arabië vertrokken. Zo haalde Al-Hilal in diezelfde periode ook Kalidou Koulibaly, Ruben Neves en Neymar naar de Saudi Pro League.
Milinković-Savić debuteerde in 2013 in het Servisch voetbalelftal onder 19, waarin op dat moment ook zijn broer Vanja speelde, als doelman. Hij werd op 1 augustus 2013 met Servië kampioen van het Europees kampioenschap –19. Milinković-Savić won twee jaar later met een selectie generatiegenoten uit zijn geboorteland ook het WK -20 van 2015. Hijzelf werd hierna uitgeroepen tot op twee na beste speler van het toernooi. Milinković-Savić debuteerde op 10 november 2017 onder leiding van bondscoach Mladen Krstajić in het Servisch voetbalelftal, in een oefeninterland in en tegen China (0–2). Milinković-Savić maakte deel uit van de Servische selectie die onder leiding van Krstajić deelnam aan het WK 2018 in Rusland. Daar sneuvelde de ploeg in de voorronde na een overwinning op Costa Rica (1–0) en nederlagen tegen achtereenvolgens Zwitserland (1–2) en Brazilië (0–2). Milinković-Savić kwam in alle drie de WK-duels in actie voor zijn vaderland. Hij wist zich met Servië niet te plaatsen voor het EK 2020, maar was samen met zijn landgenoten wel weer present op het WK 2022. Hierop speelde hij opnieuw alle drie de groepswedstrijden van Servië en scorode hij tegen Kameroen.