Suo padre, Stipe Milanović (1938–2019), era un economista e sua madre, Đurđica (nata Matasić) Milanović, era un'insegnante di inglese e tedesco[3].
Suo padre fu un membro della Lega dei Comunisti di Jugoslavia (SDK)[4] e Zoran fu battezzato in segreto dalla nonna materna, Marija Matasić, alla chiesa dei Santi Pietro e Paolo di Zagabria, con nome battesimale "Marijan"[3]. Crebbe nel quartiere di Knežija e dopo il 1970 a Trnje[3]. Aveva un fratello, Krešimir, morto nel 2019.
Ne 1981 iniziò a frequentare il Centro manageriale e giudiziario[3][5].
Nel 1999, si iscrisse al Partito Socialdemocratico (SDP) e dopo la vittoria di SDP nelle elezioni del 2000, gli fu data la responsabilità dei contatti con la NATO e tre anni dopo divenne assistente del ministro degli esteri Tonino Picula per poi lasciare l'incarico dopo la sconfitta elettorale di SDP nel 2003.
Al congresso straordinario di SDP, il 2 giugno 2007, il presidente storico del partito Ivica Račan, diede le sue dimissioni annunciando nuove elezioni primarie. Milanović si candidò pur essendo considerato un "outsider", a causa della sua breve carriera nel partito, correndo contro Željka Antunović (favorita in quanto presidente facente funzioni), Milan Bandić e Tonino Picula. Nel primo turno ottenne 592 voti, scavalcando Željka Antunović.[8] Nel secondo turno, ha affrontato Antunović e di nuovo ha vinto con un ampio margine, divenendo presidente del partito.
Milanović ha suscitato grande scalpore sui giornali quando ha affermato che Josip Broz Tito era stato un politico più positivo e in generale migliore di Franjo Tuđman.[9]
Alle elezioni parlamentari del 2007 SDP ottiene 56 seggi (31,5% dei voti), dietro di soli 10 deputati dai conservatori di HDZ, che formarono la maggioranza guidata dal premier Ivo Sanader.
^(HR) Ilko Ćimić, Biografija: Zoran Milanović, in Javno, 2 giugno 2007. URL consultato il 7 gennaio 2020 (archiviato dall'url originale il 3 agosto 2007).
^(EN) Vedran Pavlic, New Croatian Government: First 40 Days, in Total Croatia News, 1º marzo 2016. URL consultato il 6 gennaio 2020 (archiviato dall'url originale il 9 giugno 2016).