Magnus était un fils illégitime du roi Olaf Haraldsson (plus tard Saint-Olaf), par sa concubine anglaise Alfhild, à l’origine esclave de la reine Astrid Olofsdotter d’Olaf. Né prématurément, l’enfant était faible et incapable de respirer pendant les premières minutes, et on ne s’attendait probablement pas à ce qu’il survive. Olaf n’était pas présent à la naissance de l’enfant et son islandais skald Sigvatr Þórðarson devint son parrain. Dans un baptême précipité, Sigvatr nomma Magnus d’après le plus grand roi qu’il connut, également le plus grand modèle d’Olaf, Karla Magnus, ou Charlemagne. Contre toute attente, Magnus est devenu fort et en bonne santé, et il est devenu d’une importance vitale pour Olaf en tant que fils unique.
Olaf a été détrôné par le roi danois Cnut le Grand en 1028, et il s’est exilé avec sa famille et sa cour, y compris le jeune Magnus. Ils parcouraient les montagnes et traversaient Eidskog pendant l’hiver, entraient dans le Värmland et recevaient un abri de la part d’un chef appelé Sigtrygg à Närke. Après quelques mois, ils quittèrent Närke et, en mars, se dirigèrent vers l’est en direction de Sigtuna, où le roi suédois Anund Jacob leur avait laissé un navire. Le groupe navigue ensuite à travers la mer Baltique et dans le golfe de Finlande, pour finalement atterrir dans la Rus’ de Kiev (Garðaríki). Ils ont fait leur premier arrêt à Staraya Ladoga (Aldeigjuborg) pour organiser la suite du voyage. De là, ils se sont dirigés vers le sud jusqu’à Novgorod (Holmgard), où Olaf a demandé l’aide du Grand-Prince Yaroslav le Sage. Yaroslav, cependant, ne voulait pas s’impliquer directement dans les luttes de pouvoir scandinaves et a refusé d’aider. Après quelque temps, au début de l’année 1030, Olaf apprend que le comte de Lade Håkon Eiriksson, régent de Cnut en Norvège, a disparu en mer et rassemble ses hommes pour rentrer rapidement en Norvège. Magnus a été laissé pour être encouragé par Yaroslav et sa femme Ingegerd.
Au début de 1031, un groupe comprenant l’oncle de Magnus, Harald Sigurdsson (plus tard également roi et connu sous le nom de Harald Hardrada) arriva pour annoncer la nouvelle de la mort de son père à la bataille de Stiklestad. Pendant les années suivantes, Magnus a été éduqué en vieux russe et en grec et a été formé comme guerrier. En 1030, Cnut nomme sa première femme Ælfgifu et leur fils Svein régents, mais les Norvégiens trouvent leur règne oppressant et, au moment de la mort de Cnut en 1035, ils ont été chassés et Magnus est établi comme roi. Einar Thambarskelfir et Kalf Arnesson, qui avaient tous deux cherché à être nommés régents sous Cnut après la mort d’Olaf en 1030, s’étaient rendus ensemble à la Rus’ de Kiev pour ramener le garçon à régner en tant que roi de Norvège. Après avoir reçu l’approbation d’Ingegerd, ils retournèrent avec Magnus à Sigtuna au début de 1035, et reçurent le soutien du roi de Suède, frère de la belle-mère de Magnus, Astrid. Astrid devint immédiatement un partisan important de Magnus et une armée fut rassemblée en Suède, dirigée par Einar et Kalf, pour placer Magnus sur le trône norvégien.