On 11 July 2011, alongside Lazar Marković, Ninković signed his first professional contract with Partizan, on a five-year deal.[1] He made his competitive debut for the club in the return leg of the UEFA Champions League second qualifying round, coming on as a substitute for Zvonimir Vukić in a 1–0 away win over Shkëndija on 19 July 2011.[2] After missing the vast majority of the 2011–12 season due to mononucleosis, Ninković made his league debut in a 4–1 away victory against Rad on 31 March 2012. He recorded three more appearances until the end of the season, as the club won the league title.
On 11 August 2012, Ninković scored his first competitive goal for Partizan in a 7–0 home league victory over BSK Borča.[3] He became the club's youngest captain ever on 31 October 2012 at 17 years, 10 months and 12 days, coming on as a substitute in a 1–2 Serbian Cup loss to Borac Čačak, thus surpassing Stevan Jovetić.[4] The record was later broken by Andrija Živković.[5]
On 30 October 2013, Ninković scored a brace in a 3–0 Serbian Cup win away at Radnički Niš.[6] He also scored an 86th-minute winning goal in a 2–1 home league victory over the same opponent on 1 March 2014, before being sent off in the 88th minute of the game.[7]
On 22 July 2014, Ninković scored his first goal for Partizan in UEFA competitions, scoring an equalizer in a 3–1 away win against HB Tórshavn.[8] He made a total of 38 appearances and scored six goals in all competitions during the 2014–15 campaign.
Genoa
On 1 February 2016, Ninković was transferred to Italian club Genoa, being immediately loaned to fellow Serie A side Chievo until the end of the 2015–16 season.[9] He subsequently returned to Genoa for the 2016–17 season, making 19 appearances and scoring three goals in the process. Under coach Ivan Jurić, he was deployed as a play-making left back in a 3-4-2-1 formation.[10]
Ascoli
On 18 August 2018, Ninković signed a three-season contract with Serie B team Ascoli.[11]