Magnus var nesteldste sønn av kong Håkon Håkonsson og Margrete Skulesdatter. Da den eldre broren Håkon Unge ble konge sammen med sin far under hertug Skules opprør i 1240, ble Magnus hertug. Iflg. Håkon Håkonssons saga var det aktuelt å gi ham et hertugdømme som omfattet ⅓ av landet, men noen endelig avklaring fant aldri sted. Det synes likevel klart at han styrte over Sørvestlandet. Håkon Unge døde i 1257 og Magnus fikk da kongsnavn. Han ble kronet i 1261 og var enekonge fra årsskiftet 1263/64.