早已準備好一年多的糧食,打算長期固守;又以子諸葛亮靚為質,請求東吳出兵救援。
訊息傳到洛陽,司馬昭這邊快速反應,立即以皇后和太后名義釋出命令*諸葛誕。調集二十六萬大軍屯駐丘頭(今河南沈丘),並任鎮南將軍王基行鎮東將軍,都督揚州、豫州諸軍事,和安東將軍陳騫等相互照應,圍攻壽春。
與此同時,東吳應諸葛誕請求,派出將軍全懌、全端、唐諮、王祚等率軍三萬兵,會同降將文欽等往救淮南,正值魏兵剛剛到達,合圍尚未形成,全懌、文欽等依山勢從城*入城內。另一路吳將朱異率軍三萬兵駐屯安豐,作為全懌等人外援。
魏軍主將王基是位富於作戰經驗的軍事家,他本來要求快速進攻,司馬昭卻命令收斂軍隊在城外防守,又詔命他轉據北山。王基認為不妥,上表回奏說:“現與敵相對,當不動如山,如輾轉遷移,依據山險,反易使軍心動搖,士氣大受損傷。現我軍各據其所,深溝高壘,人心安定,不應再有所動搖,這是統兵之要啊。”司馬昭認為說的有理,授予他自由掌握的權力。他於是部署四面合圍,包圍陣地層層疊疊,文欽等幾次出城攻擊都被打回。
不久,督兗州刺史州泰等在陽淵擊敗壽春外圍吳將朱異,殺傷吳兵二千餘人,朱異逃走。七月,吳再派朱異等率兵萬餘人,朱異把輜重留在都陸,輕兵進至黎漿。魏將石苞、州泰等再次攻擊朱異,朱異又失敗退走。留在都陸的輜重、糧食等都被泰山太守胡烈出奇兵縱火燒燬,吳兵餓極,靠食葛葉漸次退走,朱異被吳大將均孫綝歸罪殺死。
司馬昭分析吳人為何誅殺朱異原因時分析說:“朱異軍不能到達壽春,不是朱異本人罪過。而吳人殺他,意在向壽春表明堅決支援的態度和決心,堅定諸葛誕部隊守城意志,使其對外部救援仍抱希望。否則城中軍會拼死突圍。或者認為圍城大軍不能持久,而節減口糧,以待時變,我料敵情不出以上三種情況。我軍應想法亂其部署,使其麻痺輕敵,這才是制勝之計。”因此命令部隊加緊包圍,分遣老弱士兵到淮北就食,並明白告訴士兵們說,軍中糧食匱乏,每人只能供應三升黃豆了。
城中守軍探聽到魏軍無糧訊息,果然非常高興。司馬昭又命令部隊向敵示弱,使用反間計,揚言吳國救兵將至,故意表現出驚慌的樣子。諸葛誕果然被魏軍種種假象所迷惑,以為敵人即將退去,城中之圍指日可解,遂讓士兵們放開吃喝。城中糧食很快吃盡,城外援軍卻未到來。諸葛誕頓時慌了手腳,手下將領們有的主張拼死突圍,有的主張繼續固守,幾乎鬧到劍拔弩張的地步。諸葛誕的親信將領蔣班、焦彝甚至偷偷出城投降魏軍。這時偏偏屋漏又逢連陰雨,吳國內部發生突然事變,吳將全懌、 全儀與人爭訟失敗降魏,司馬昭教人以二人名義秘密寫信送給城中全懌、全端及弟侄全靖、全翩,全緝等。信中造謠說:“吳王憤怒全懌等攻守壽春不力,要把他們各家家屬全部殺光。”全懌等很是害怕,率領部眾數千人出城投降,城中防守力量更加薄弱。
甘露三年(258年)正月,文欽與諸葛誕之間發生矛盾,在一次激烈爭吵時被諸葛誕殺死,文欽兒子文鴦,文虎翻越城牆投降司馬昭。文欽父子曾是魏兵死敵,給予魏兵造成重大殺傷,如今文鴦兄弟落到魏兵手裡,軍中諸將紛紛要把二人殺死。司馬昭卻主張赦免二人,他勸大家說:“文欽父子固然罪不可赦,但文鴦兄弟窮途末路歸降於我,我如殺死他們,城中守軍誰還敢來投降?殺死二人,是堅定敵人守城決心。”於是赦二人無罪,都授以將軍銜,賜爵關內侯,並配給幾百名騎兵讓他們沿城巡迴呼喊:“文欽的兒子都赦免不殺,何況他人呢?你們還猶豫什麼,趕快出城投降呀!”
城中守軍聽到呼喊,軍心動搖,加之糧食已盡,飢餓難耐。這時司馬昭引軍巡城,見城上士兵虛張弓矢,卻不發箭,知道火候已到,對諸將說:“可以攻城了。”魏軍從四面八方加緊包圍,激烈攻城,二月二十日攻破壽春,殺諸葛誕並滅三族。吳將唐諮、王祚、徐韶等率部屬投降。魏軍中有人耽心吳降兵日後反叛,主張全部坑殺他們,司馬昭卻表現出空前大度說:“古人用兵,以保衛國家為上,對於敵人,只殺其首惡,現諸葛誕等既已伏罪,投向吳兵就不用追究了。即使他們逃回吳國,也足以顯示我堂堂中國寬宏大度。”吳降兵一個未殺,分別安置到河南、河東、河中三地;吳將唐諮被封安遠將軍,其他將領按級任職,人心大順。
戰後,司馬昭被封晉公,進位相國,“增邑萬戶,食三縣,諸子無爵者皆封列侯(《晉書·帝紀二》)。