文皇帝名昭,字子上,是景帝司馬師的同母弟。魏明帝景初三年(239),封為新城鄉侯。正始初年(240),為洛陽典農中郎將。當時正值魏明帝大興奢侈之風以後,文帝免除苛捐雜稅,不誤農時,百姓大為喜悅。後轉為散騎常侍。
大將軍曹爽伐蜀時,以文帝為征蜀將軍,作為夏侯玄的副手,率軍出駱谷,駐紮在興勢。蜀將王林夜間偷襲文帝軍營,文帝堅持按兵不動。王林終於退走,文帝對夏侯玄說:「費韋佔據險要之地而固守,我軍前進得不到作戰的機會,攻堅而不能下,應趕快撤退,以後再作打算。」曹爽等引軍撤退,費韋果然率兵急奔三嶺,截我歸路,魏軍奪得險道才得通過。回到京都,拜為議郎。殺曹爽時,文帝率眾保衛二宮,因功增加封邑一千戶。
蜀將姜維侵擾隴右一帶,征西將軍郭淮從長安出發抗拒蜀軍,文帝晉位為安西將軍、持節,屯兵關中,調度諸軍。郭淮在麴攻打姜維別將句安,長期不能決勝負。文帝即進軍佔據長城,南向駱谷設置疑兵。姜維害怕,退保南鄭,句安的軍隊斷絕後援,率眾投降。文帝轉為安東將軍、持節,鎮守許昌。
魏大軍討伐王腸時,文帝都督淮北諸軍事,率軍會師於項。增加封邑三百戶,賜給金印紫綬。不久又晉號都督,統率征東將軍胡遵、鎮東將軍諸葛誕伐吳,戰於東關。胡遵、諸葛誕軍大敗,文帝因此削去侯爵。
蜀將姜維又侵擾隴右,揚言要攻狄道。天子以文帝任征西將軍,駐軍長安。雍州刺史陳泰想走在蜀軍前面佔據狄道,文帝說:「姜維攻羌人收取了他們的人質,屯聚糧食,建造糧倉,而又轉道至此,正是想完成征服塞外諸羌的工作,為後年攻魏作準備。若真的要攻狄道,怎肯事先洩露,讓外人知道?今揚言進攻,正是準備回師。」姜維果然燒了營壘而離去。遇上新平羌胡叛亂,文帝率軍將他們擊破,隨即在靈州陳兵示威,北邊胡虜被震懾,原來叛變的又來投降了。文帝因這次軍功,又封為新城鄉侯。
高貴鄉公立為天子,文帝參與謀劃定策,晉封為高都侯,增加封邑二千戶。
毋丘儉、文欽叛亂時,大軍東征,文帝兼任中領軍,留鎮洛陽。
景帝病重時,文帝自京都到許昌省問,拜為衛將軍。景帝死,天子命文帝鎮守許昌,命尚書傅嘏率六軍回京師。文帝用傅嘏及鍾會的計謀,自己率軍回京。到洛陽後,晉位為大將軍,加侍中,都督中外諸軍、錄尚書事,輔助朝政,帶劍穿履上殿。文帝堅意辭讓不受。
甘露元年(256)春正月,加大都督職銜,奏事不提自己的名字。夏六月,晉封為高都公,封地方七百里,加九錫,假斧鉞,晉號為大都督,帶劍穿履上殿。又辭讓不受。秋八月十六日,加賜黃鉞,增加封邑三縣。
二年夏五月初一,鎮東大將軍諸葛誕殺了揚州刺史樂林,佔據淮南叛亂,送兒子諸葛靚作人質請求吳國援救。議論此事的人請求立即討伐叛軍,文帝說:「諸葛誕認為毋丘儉舉事輕率急速而導致失敗,今天他必然外連吳寇,這樣一來,叛變的規模大而行動遲緩。我可以與四方將領聯合起來,以全勝之策來制服他。」於是向天子上表說:「昔日黥布叛逆,漢高祖親征;隗囂違抗,光武帝西伐;烈祖明皇帝多次御駕親征,都是為了振奮士氣,耀武揚威。陛下應暫時親臨軍旅,使將士得以借助天威。今討賊諸軍約五十萬,以眾擊寡,沒有不勝的。」
秋七月,護衛著天子與皇后一起東征,征發青、徐、荊、豫四州兵馬,並從關中分部分軍隊,共同會師淮北。大軍至項,讓廷尉何楨持符節出使淮南,勸慰叛軍將士,申明朝廷逆誅賞順的政策,初五,文帝進軍丘頭。吳國使文欽、唐咨、全端、全懌等三萬餘人來救諸葛誕,魏諸將迎擊,不能抵禦。將軍李廣臨敵畏縮不前,泰山太守常時聲稱有疾不出兵,都斬首示眾。
八月,吳將朱異率兵萬餘人,將輜重留在都陸,軍隊輕裝到黎漿。監軍石苞、兗州刺史州泰抗拒朱異軍,朱異退走。泰山太守胡烈用奇兵襲擊都陸,燒燬朱異的糧草輜重,石苞、州泰又進擊朱異,大破其軍。朱異殘兵飢餓無糧,吃葛葉而逃竄,吳人殺了朱異。文帝說:「朱異不能到達壽春,不是他自己的罪過,而吳人殺了他,只不過是向據守壽春的諸葛誕道歉,堅定他的意志,使他還指望救兵的到來。如不這樣,諸葛誕就會突圍,拚命於一旦。或者認為我大軍不能持久,他們就會節省糧食,堅持下去,等待其他變故發生。預料吳賊的出路,不會超出以上三種選擇。如今我們應當採取多種行動,擾亂他們的視聽,防備他們竄逃,這是取勝之計。」因而命令軍隊完成包圍圈,遣送一些老弱殘兵到淮北就地取食,前線士兵每人發給三升大豆。文欽聽說這種情況,果然十分高興。文帝更讓士兵裝作飢餓瘦弱的樣子給賊軍看,又放出很多間諜到賊軍,揚言吳國救兵就要來到。諸葛誕等就讓士兵放寬標準,盡情吃喝,城中糧食很快短缺起來。石苞、王基都請求進攻,文帝說:「諸葛誕圖謀叛逆,並非一朝一夕,屯聚糧食,完善城池守具,自認為足以佔據淮南。文欽與諸葛誕同惡相濟,必不會隨便突圍出走。今若緊急攻城,必然損傷我方兵力。如外面援軍突然到來,內外受敵,那是很危險的做法。如今三個叛賊同在一個孤城之中,天意或許會讓他們同時滅亡。我們應從長遠計議,制服他們,只須三面包圍,堅守陣地。若賊救兵從陸路來,軍糧必少,我們用遊兵輕騎斷絕其糧草運輸,救兵可不戰而破。外賊已破,文欽等必然束手就擒了。」全懌的母親是孫權的女兒,在吳獲罪,全端哥哥的兒子全..、全儀護衛其母投奔魏軍。全儀兄全靜當時在壽春,文帝用鍾會的計謀,代全..、全儀寫信勸全靜投降,全靜兄弟五人率領部下來降。城中大為恐慌。
三年春正月初七,諸葛誕、文欽等出來攻擊圍城軍,被諸軍擊退。當初,諸葛誕與文欽內部不和,到緊急的時候,二人相互猜疑。遇到文欽計議軍事時與諸葛誕的意見相牴觸,諸葛誕便親手殺了文欽。文欽之子文鴦進攻諸葛誕,不能取勝,跳下城牆投降魏軍,魏任他為將軍,封為侯,並讓他繞城喊話勸降。文帝看到城上守軍持弓而不發箭,對諸將說:「可以攻城了。」
二月二十日,魏軍攻城,當天城被攻破,殺了諸葛誕,夷滅三族。吳將唐咨、孫曼、孫彌、徐韶等都率部下投降,文帝上表給他們加封爵,士卒飢餓有病的,供給糧食醫藥。有人說吳兵必然不肯為我們效力,請求把他們活埋了。文帝說:「放他們回去,才顯出中國人的寬宏大度。」後來將他們遷徙到三河。
夏四月,回到京師,魏帝把丘頭改為武丘,以紀念自己的武功。
五月,天子封文帝為晉公,封地包括并州的太原、上黨、西河、樂平、新興、雁門和司州的河東、平陽,共八郡,地方七百里,加九錫,晉位相國,晉國府中置官司。文帝九次辭讓,天子才同意了。於是增加封邑一萬戶,食三縣租稅。兒子中沒有爵位的都封為列侯。
秋七月,文帝上奏錄用前世名臣元勳之子孫,量才任職。
四年夏六月,將荊州分為兩部分,置二都督,王基鎮守新野,州泰鎮守襄陽。使石苞都督揚州,陳騫都督豫州,鍾毓都督徐州,宋均監青州諸軍事。
景元元年(260)夏四月,天子又命文帝接受以前所封的爵位,文帝又辭讓不受。天子認為文帝三世作宰輔,國家政事天子不能作主,心中不安,又常憂慮被廢受辱,打算在殿上召集百官廢黜文帝。
五月初六夜裡,使冗從僕射李昭等在陵雲台佈署甲士,召侍中王沈、散騎常侍王業、尚書王經,從懷中取出用黃素寫成的詔書給他們看,讓他們戒嚴到天亮。王沈、王業急速將此事告知文帝,文帝召護軍賈充等作戒備。天子知道事情洩露,率領左右進攻文帝所在的丞相府,聲稱要討伐有罪之人,敢有騷動抵抗者滅族。丞相府中的兵將都不敢迎戰,賈充呵斥諸將說:「主公平時養活你們,正是為了今天啊!」太子舍人成濟拿起戈向天子車駕進攻,刺中天子,戈刃從背上穿出,天子死於車中。
文帝召集百官商議事變的原委,僕射陳泰不到。文帝派遣其舅荀豈頁用車子把他請來,文帝又將他請到一個幽靜的房間,對他說:「玄伯,現在天下人是怎樣看待我呢?」陳泰說:「只有腰斬賈充,才能向天下人略表謝意。」文帝說:「卿再想一想退一步的辦法。」陳泰說:「我只有此上策,未有其次。」於是文帝歸罪於成濟而把他斬了。太后下令說:「漢代昌邑王因罪廢為庶人,此兒也應用庶人禮安葬,使內外人都知道他的行徑。」文帝又殺尚書王經,認為他和自己不一心。
二十六日,文帝向太后上奏說:「故高貴鄉公率領護駕士卒,拔刀鳴鼓衝向臣的住處,臣怕雙方交兵,即命令將士不得傷害任何人,違令者以軍法處置。騎督成卒之弟太子舍人成濟進入兵陣,傷害高貴鄉公以致喪命。我聽說做人臣的應當守人臣的節義,至死也不能有二心,侍奉君主,不能躲避禍難。那次變故突然發生,災禍像機關發動一樣迅速到來,臣的確想捨棄此身,等待一死,聽候天子裁決。然臣考慮到這次變故的謀劃,意在危害太后,傾覆社稷宗廟。臣枉充宰輔之位,有安定國家的義務,即連續發命,不得迫近天子輦車。而成濟私自闖入兵陣,以致發生這樣的大事故,臣悲哀痛恨,五臟摧裂。成濟違犯國家法紀,死不足以抵其罪,應逮捕成濟家屬,交付廷尉治罪。」太后聽了這個意見,誅滅了成濟三族。與公卿們商議,立燕王曹宇之子常道鄉公曹璜為天子。
六月,改年號為景元。初四,天子晉文帝為相國,封為晉公,增封邑十郡,加九錫,同族子弟中未封侯者都封為亭侯,賜錢一千萬,帛一萬匹,文帝堅決辭讓,才沒有施行。
冬十一月,吳吉陽督蕭慎送書信給鎮東將軍石苞詐降,請求石苞出兵接應。文帝知道是詐降,使石苞表面上準備迎接,而暗地嚴加戒備。
景元二年秋八月甲寅這天,天子使太尉高柔授予文帝相國印綬,使司空鄭沖送晉公代表封國的茅土,加九錫,文帝堅決辭讓不受。
三年夏四月,肅慎國來獻木苦矢、石纈、弓甲、貂皮等,天子命令將這些貢物送給大將軍府。
四年春二月十一日,天子又命文帝接受以前的封賞,文帝堅決辭讓。
三月,天子下詔讓大將軍府增置司馬一人,從事中郎二人,舍人十人。
這年夏天,文帝準備伐蜀,與眾人商量說:「自在壽春平定叛亂以來,士兵已經六年沒有戰事,製造兵器,修繕盔甲,準備對付吳蜀二虜。如果滅吳,大略計算一下,造戰船,開水道,得用千餘萬個工日,這就要十萬人一百幾十天才能完成。另外南方地勢低下氣候潮濕,必然會發生疾疫。當今應先取蜀,滅蜀三年之後,借巴蜀可以順流而下的有利地勢,水陸並進,這就像歷史上晉滅虞定虢,秦吞韓並魏那樣容易了。蜀戰士據統計有九萬,駐守成都及守備後方諸郡的不下四萬,餘下的不過五萬。如今將姜維拖在沓中,使他不能東顧,然後大軍直指駱谷,出其空虛之地,以襲擊漢中。蜀軍若各自據城守險,必然兵力分散,首尾隔絕。我們可以調集大軍破其城池,派遣散兵佔據村野,劍閣無暇守其險,關頭無自保之力。以劉禪之昏庸,外面邊城陷落,內部士女震驚,其滅亡是可以預料的。」征西將軍鄧艾以為蜀尚無禍亂之機可乘,屢次提出不同意見。文帝感到憂慮,派主簿師纂到鄧艾軍作司馬,尋找機會勸說,鄧艾這才奉命。於是征發四方之兵十八萬,使鄧艾從狄道到沓中進攻姜維,雍州刺史諸葛緒從祁山出發駐軍武街,斷絕姜維的退路,鎮西將軍鍾會率領前將軍李輔、征蜀護軍胡烈等從駱谷進攻漢中。
秋八月,大軍從洛陽出發,大賞將士,列陣誓師。將軍鄧敦提出蜀不可伐,文帝將他斬首示眾。
九月,又使天水太守王頎攻姜維營,隴西太守牽弘在前面截擊,金城太守楊欣進軍甘松。鍾會所率軍隊分為二隊,一隊由李輔率領,經過斜谷,將蜀將王含包圍於樂城,又使部將易愷在漢城進攻蔣斌。鍾會率一隊直指陽安,護軍胡烈攻陷關城。姜維聞訊後率軍退回,王頎追擊姜維,在強川打敗蜀軍。姜維與張翼、廖化合併共守劍閣,鍾會進攻劍閣。
冬十月,因各路軍頻繁報捷,天子下詔重申以前封賞之意,陳列文帝功德,以春秋晉故地十郡方七百里封文帝為晉公,晉位為相國,加九錫(詔文略)。公卿將校都到大將軍府宣旨祝賀,文帝又以禮辭讓。
司空鄭沖率群官勸文帝接受封爵,說:「我們恭敬地看到封賜您的詔書,又聽說明公您又堅決辭讓,我鄭沖及群官對您懷著赤誠之心,想向您說說淺陋的想法,我們認為,聖王制定封賜制度,百代以後,還是這樣執行,褒揚有德之士,封賞有功之人,自古及今都是如此,昔日的伊尹,不過是有莘氏陪嫁女兒的臣僕,一旦輔助成湯建功立業,於是被稱為賢相代號的阿衡。周公憑借文王武王建立的功業,輔助成王,尚且受封於曲阜,據有龜蒙一帶的土地。呂尚不過是石番溪的漁夫,一朝作了周的統帥,便被封在營丘。從那以後,功薄而賞厚者,多得無法計算,然而賢哲之士,還是認為這些人物是值得稱道的。況且自明公先父故相國以來,世代都有美德,輔助魏室,安定天下,朝無惡政,民無謗言。以前明公西征靈州,北臨沙漠,榆中以西,皆望風震服,羌戎奔向內地,歸附中原,東邊平定諸葛誕的叛亂,戰勝敵人而我軍完整無損。擒獲闔閭之將,俘虜輕騎銳師以萬萬計,德威達到南海,英名震懾三越,天下康寧,無苛政奸人。因而時俗畏威懷德,東夷獻舞。故聖上考查古今典禮舊章,開國封邑,立都太原。明公應奉聖上旨意,受此大福,順應天意人心。功勳如日月光照宇宙,封國賜爵理應如巍巍斑山,永世不移。這樣才能內外協調,不違背典章事理。如此則今後從事征伐,可不戰而勝,掃除東吳,望祀岷山,西平巴蜀。進而回師停車,指揮天下,遠方夷狄無不歸服,中原臣民無不肅整。令大魏之德盛於唐堯虞舜,明公之勳,超過齊桓晉文。然後學習文伯歸隱於滄海,傚法許由退居於箕山,這豈不是盛大的舉動!最公最平,誰可與相比,何必用心於細小的謙讓之禮呢。」文帝這才接受天子封賜之命。
十一月,鄧艾率萬餘人從陰平越過絕險的大山進至江油,在綿竹大破蜀軍,殺了諸葛瞻,首級傳往京師。又進軍雒縣,蜀主劉禪投降。天子命晉公以相國身份統攝朝政,於是送上新職符節,去掉侍中、大都督、錄尚書的稱號。文帝上表讓鄧艾為太尉,鍾會為司徒。鍾會暗地謀劃叛逆,因而秘密派使者誣陷鄧艾。
鹹熙元年(264)春正月,用運囚犯的檻車召鄧艾入京。初四,文帝奉天子之命西征,駐軍長安。當時,魏諸侯都在鄴城,命從事中郎山濤兼管軍司事,鎮守鄴城,派遣護軍賈充持節、督諸軍,據守漢中。不久鍾會在蜀中謀反,監軍衛馞、右將軍胡烈攻鍾會,並殺了他。
當初,鍾會將要伐蜀,西曹屬邵悌對文帝說:「鍾會很難讓人放心,不能使他伐蜀。」文帝笑道:「取蜀易如反掌,而眾人都說不可,只有鍾會與我意見一致。滅蜀之後,中原將士人人思歸,蜀之遺民尚有恐懼之心,鍾會即使有叛逆之心,也不會實現的。」事情最後果如文帝所料。
丙辰這天,文帝從長安回到京師。
三月十九日,天子將文帝的爵位晉陞為王,增加封地,連以前所封共二十郡。
夏五月二十四日,天子追加舞陽宣文侯司馬懿為晉宣王,舞陽忠武侯司馬師為晉景王。
秋七月二十五日,文帝上奏請司空荀豈頁定禮儀,中護軍賈充修正法律,尚書僕射裴秀議官制,太保鄭沖總攬裁決。開始建立五等爵。
冬十月初一,文帝上奏讓相國參軍吳人徐劭、散騎常侍水曹屬孫..出使吳國,向孫皓說明平蜀之事,並送去馬錦等禮物,以顯魏的國威和對吳的關懷。二十日,天子命中撫軍新昌鄉侯司馬炎為晉世子。
二年春二月十九日,朐月忍縣獻靈龜,天子送給相府。
夏四月,孫皓使紀陟來聘問,並獻上地方特產。
五月,天子命文帝可以像天子一樣在冠冕上懸掛十二個玉串,可以樹天子的旌旗,出入設警戒,清道路,乘坐金根車,駕六匹馬,備不同季節的五種副車,出行時以旄頭雲罕旗作引導,樂舞用八佾,設鍾架,四面懸掛樂器,地位超過天子之父燕王曹宇。晉王王妃晉為王后,世子晉為太子,王女王孫爵位稱號都按天子的禮儀。各種繁法苛政及不便於時人的禮儀,文帝都上奏加以廢除。晉國設置御史大夫、侍中、常侍、尚書、中領軍、衛將軍官。
秋八月初九,文帝死於殿堂,終年五十五歲。
九月二十二日,葬於崇陽陵,謚號為文王,武帝司馬炎受禪即位後,追尊號為文皇帝,廟號為太祖。