Bio je sin Miloša Obrenovića, sina Jevrema Obrenovića (rođenog brata kneza Miloša), i Elene Marije Katardži.
Otac Milana Obrenovića je kao strani najamnik služio u rumunskoj vojsci i poginuo je u borbi sa Turcima kod Bukurešta 20. novembra 1861. mMilanova majka Elena Marija Katardži bila je ćerka rumunskog grofa Konstantina Katardžija. Posle rođenja Milanovog, njegovi roditelji su se razišli.
Pošto mu je otac poginuo, o Milanu se brinula samo majka koja je, navode hroničari, vodila raskošni život aristokratkinje, a vaspitanju deteta nije poklanjala neku veliku pažnju.
Brigu o mladom Milanu je zbog toga preuzeo njegov rođak, knez Mihailo Obrenović.
Tako je mali Milan Obrenović sa šest godina stigao u Kragujevac kod kneza Mihaila koji mu je obezbedio i guvernantu koja ga je vaspitavala i podučavala.
Kada je knez Mihailo ubijen u Košutnjaku, upravo Milan je izabran za njegovog naslednika.
Pukovnik Milivoje Petrović Blaznavac naredio je malom beogradskom garnizonu da se zakune na vernost Milanu Obrenoviću, tada četrnaestogodišnjaku.
Pošto je bio maloletan, umesto njega upravljalo je tročlano namesništvo u kom su glavnu ulogu imali baš Milivoje Blaznavac i Jovan Ristić.
Pošto je postao punoletan, knez Milan Obrenović je 1872. godine preuzeo vlast od namesništva.
Na početku svoje vladavine oslanjao se uglavnom na vojsku, pa je radio na njenom jačanju. U spoljnoj politici oslanjao se sve više na Rusiju.
Milan je 1876. objavio rat Osmanskom carstvu, ali je nespremna srpska vojska poražena u Prvom srpsko-turskom ratu. Ipak, Srbija je više uspeha imala u Drugom srpsko-turskom ratu.
Posle tog rata Srbiji je na Berlinskom kongresu priznata nezavisnost, a u njen sastav su ušli niški, pirotski, toplički i vranjski okrug.
Milan je bio razočaran ruskom podrškom za stvaranje sanstefanske Bugarske, pa se od tada u spoljnoj politici oslanjao na Austrougarsku, sa kojom je 1881. sklopljena Tajna konvencija.
Tako je Milan stekao austrougarsku podršku za proglašenje Srbije za kraljevinu, što se i desilo 1882.
Kralj Milan nije imao podršku naroda, pa je od straha od bune naredio da se od naroda pokupi svo oružje, što je bio povod za izbijanje Timočke bune u istočnoj Srbiji. Buna je ugušena, a za nju su okrivljeni radikali.
Tromesečni srpsko-bugarski rat koji je 1885. počeo kralj Milan Obrenović zbog pripajanja Istočne Rumelije Bugarskoj znatno je oslabio njegov položaj u zemlji.
Kralj Milan je 1888. godine doneo liberalniji ustav, poznat kao Radikalski ustav. Zatim je abdicirao i ostavio vlast sinu Aleksandru i napustio zemlju.
U Srbiju se vratio 1897. godine kao vrhovni komandant vojske, koju je potpuno reformisao i modernizovao.
Zauvek je otišao iz Srbije 1900. godine jer nije podržavao Aleksandrov brak sa Dragom Mašin.
Na njega su izvršena čak četiri neuspela atentata(Terazijska bomba, Smederevski nameštaj, Ilkin atentat i Ivanjdanski atentat), od kojih za jedan (Smederevski nameštaj) nikada nije razjašnjeno da li je bio atentat ili samo nesrećni slučaj.
Neposredno posle završetaka Srpsko-bugarskog rata, pokušan je atentat na kralja Milana na vrlo specifičan način. Naime, zaverenici su uspeli da se uvuku u Dvor i da istesterišu grede od njegovog kupatila. Samo zahvaljujući budnosti stražara koji su videli podvalu, kralj Milan Obrenović se spasao.
Preminuo je u Beču, od upale pluća.
Tu se smrtno razboleo od upale pluća. Lekarski konzilijum koji ga je pregledao je rekao da mu nema spasa. Car Franc Jozef, u znak dobrih odnosa je obezbedio jednu svoju kuću u kojoj je bolesni Milan boravio i poslao mađarskog grofa Ergenija Zičija da do zadnjeg časa bude s njim.
Preminuo je 11. februara 1901. u 47. godini. Sahranjen je u Manastiru Krušedol, pored kneginje Ljubice.
"Dok sam živ, plakaću za njima": Goran Vesić kroz suze objasnio zašto podnosi ostavku (Video)
Zvezda od dominacije do problema u Pioniru: Trojkaška rapsodija, drama i pobeda u derbiju kola!
Zvezda bez sedmorice važnih igrača na Barselonu: Muke za Milojevića, startna postava se već zna
Dominacija Partizana u Železniku: Ubedljiva pobeda za 7-0, razigrao se i Vašington
Goran Vesić podnosi ostavku!