郝昭大軍趕赴許昌之際,洛陽形勢已經極為危急.洛陽守軍並未受到河北大捷鼓舞,為諸葛亮的攻心之術攪得軍心渙散。曹操幾路援軍,均為諸葛亮設計擊退。
洛陽糧草將盡,曹丕聚眾相議。鄧艾雖為智謀之士,也是毫無良策。鍾繇道:「今河北已定,郝昭、張遼大軍已赴許昌、北海,若是張遼大軍兵出北海,許昌、定陶兩軍夾擊譙城,若能逼得諸葛亮分軍往救,洛陽之圍可解。現在洛陽糧草將盡,軍無戰心,局勢已危。當思計策補充糧草。」
賈詡此時亦在洛陽,道:「若是讓張遼等人進攻金旋東線大軍,其計過緩。我軍如今糧草用盡之時,也是兵敗城破之日。諸葛亮派兵截斷糧道,我等為何不反截其糧,以為我用。」鄧艾然之。曹丕遂命鄧艾、曹仁、夏侯淵三將挑選精兵乘隙劫糧。又遣使赴許昌,使曹操攻擊譙城、都陽,逼迫諸葛亮分軍,以解洛陽之危。
洛陽奔赴許昌使者為魏延巡軍所擒,獻於孔明帥帳。孔明溫言詢之,探聽出洛陽劫糧出兵之計。遂思得一計,升帳點將。命令王平、張嶷率領兵馬三萬詐作護糧軍,糧車內多盛易燃易爆之物,見曹兵趕來即將糧車圍成一團,點火後棄去糧車,率領所部兵馬退於側旁,若見敵軍與伏兵接戰,即刻從後掩殺。又命魏延、譚雄率領五萬精兵,阻住劫糧曹軍退路。命令李嚴率領一萬士兵換上曹軍衣甲,推百餘糧車詐為劫糧歸城士兵,詐開城門。命令姜維、張苞、朱恆率領八萬士兵隨在李嚴軍後,詐開城門後,攻入城內。諸葛亮與余將率領七萬士兵,伏於許昌歸路,等候曹丕敗軍。
王平、張嶷所部夜間行軍,故意延緩,使曹軍細作獲知。細報急報鄧艾,鄧艾即與曹仁、夏侯淵點城中精兵六萬前往劫糧。鄧艾大軍將至,王平、張嶷命令軍士將糧車圍成一圈,點火後即向側旁撤去。鄧艾等人見狀大喜,命令軍士上前救火,軍士剛剛趨向前去,只聽轟得一聲,糧車頓成變成一片火海,近前兵士被燒傷者眾多。鄧艾見大事不妙,率領所部兵馬欲要回撤。此時魏延伏兵突起,兩軍相戰多時。鄧艾所部因為魏延兵力太少,率領大軍力戰。此時王平、張嶷所部從側後方殺來,鄧艾所部遭受夾擊,大敗。
此時李嚴已經詐開城門,姜維等將率軍殺入城中。城內守將王雙等見大事不妙,聚集士兵保護曹丕,打開東門撤往許昌。鄧艾率領敗軍殺到城側,只望城中守軍出城接應,此時城門大開,鄧艾正欲率領部下退入城中,姜維所部從城中殺出,一排強駑當前襲來,鄧艾不防,當即斃命。曹仁、夏侯淵等人見大事不妙,率領敗軍往許昌方向退去。姜維、魏延等將率領部下在後追擊。
諸葛亮算定曹軍兵敗後,必然會走許昌。於許昌歸途路狹之處佈陣,一萬強駑兵擺於陣前,三萬長槍兵擺成長方陣隨之其後,後面輕騎兵為後軍。曹丕等率領敗軍來到,突見前方火把齊明,路上黑壓壓一片大軍攔路,強駑突然射來,前軍死傷無數。正要往後退去,卻見曹仁等敗軍又至,曹軍得知鄧艾陣亡,諸將更是慌亂。此時姜維、魏延統軍從後殺來,強駑連綿不絕,殺傷士兵無數。
曹軍避無所避,王雙等將只好統軍向前殺來。只見諸葛亮將令旗一擺,強駑兵從兩側撤到陣後,露出長槍兵來,長槍兵行動雖然遲緩,然而陣勢整齊,兵刃極長,所到之處,曹兵無所阻當。王雙等將見形勢危急,率領親兵保護曹丕,棄掉馬匹,步行從兩側山路逃命。
洛陽十五萬守軍,經過這場大戰,死傷二萬餘眾,餘者見無路可逃,紛紛請降,降者近八萬。跟隨曹丕間小路而逃者,又被諸葛亮派遣文聘、蘇飛兩將,率領輕騎兵兩萬沿途追襲,逃至許昌者,僅有二萬餘眾。洛陽守將夏侯和、鍾繇、呂虜三將於亂軍中被殺。
此戰殺得曹軍膽戰心驚,提及諸葛亮軍威,無人敢於應戰。諸葛亮收得降兵八萬,命令編於周瑜所部二萬、6遜所部二萬,余兵編於自己所部。洛陽既得,弘農、宛城皆成內郡,諸葛亮命令蘇飛率領三萬兵馬駐守弘農,張嶷率領三萬兵馬駐守宛城,余軍皆趕赴洛陽,洛陽守軍共有三十九萬。諸葛亮整頓洛陽軍務,訓練兵馬,準備繼續攻擊曹操屬地。
曹操此時見洛陽城失陷,許昌面臨洛陽、譙城兩路大軍壓境,調配各路文武,重新佈置防務。曹操因為壺關為河北諸郡門戶,臨洛陽甚近,為戰略要地,命令司馬懿、郝昭、鄧忠、曹純、司馬師、司馬昭等,率領十五萬兵馬駐守壺關。又命張遼、夏侯淳、程昱、於禁、潘鳳、李典等,率領十二萬兵馬駐守北海。曹仁、夏侯淵、郭嘉、夏侯霸、王雙、張合等,率領十三萬兵馬駐守定陶;王子服、荀攸率領五萬兵馬駐守晉陽;於禁、郭奕率領五萬兵馬駐守鄴城;夏侯德、陳登率領五萬兵馬駐守濮陽;張燕、劉岱率領五萬兵馬駐守陳留;楊彪、陳群率一萬兵守北平;吳質、耿紀率一萬兵守襄平;吳綱、曹爽率領一萬兵馬駐守代縣;嚴政、左賢王率領一萬兵馬駐守樂陵;王睿、楊修率領一萬兵馬駐守南皮;夏侯玄、孔融率領一萬兵馬駐守易京;曹洪、夏侯威率領一萬兵馬駐守官渡;夏侯恩、賈充率領一萬兵馬駐守界橋。自與余將率領大軍二十萬駐守許昌。
諸葛亮整頓兵馬完畢,命令6遜所部兵馬防守徐州、都陽,周瑜率領所部兵馬攻打北海;關羽所部兵馬防守譙城,姜維率領所部兵馬駐守洛陽,自率所部大軍共二十一萬往攻壺關。司馬懿與諸葛亮連戰連敗,聞聽諸葛亮來攻,大為恐慌,使人趕往許昌求援。曹操因為無兵可援,命令司馬懿堅守。派曹彰、文欽、賈詡率領十萬兵馬攻打洛陽,盼望諸葛亮回軍往救。
諸葛亮知道曹彰絕非姜維之敵,屯兵壺關,暫不攻打。司馬懿見諸葛亮只圍不攻,又懼諸葛亮多謀,日夜巡防,不敢疏忽。諸葛亮卻潛使龐德、朱恆率領十萬大軍夜襲鄴城,於禁不敵,遣使往壺關求救。司馬懿聞知鄴城危急,不得不救,命令郝昭、曹純、司馬師率領八萬士兵守城,自率鄧忠、司馬昭率領七萬兵馬往救鄴城,到得半途,正逢鄴城敗軍,合兵一起來奪鄴城。
司馬懿到達鄴城,城中已被諸葛亮所部攻破。朱恆、龐德兩將卻不與司馬懿交戰,盡掠城中糧草緇重返回壺關。司馬懿見其兵回返,心知大事不妙,連忙率領本部軍回追,卻已是不及。
諸葛亮見司馬懿分軍後,隨即命令士兵用火藥炸開城牆,率領大軍殺入。郝昭等將一看城池已破,率領大軍往鄴城退去,路上正遇朱恆、龐德所部精兵,不敢與其交戰,繞路而行,朱恆大軍奉諸葛亮將令,也不追趕,入城與諸葛亮會合。諸葛亮遂授計張苞、周泰、韓當三將,命令三將率領十萬兵馬趕往晉陽。
郝昭與司馬懿合兵後,聞知諸葛亮分軍攻打晉陽,率領大軍前來搶奪壺關。諸葛亮命令諸軍打開北門,將城內糧草輜重盡數遷往城外,自率大軍從北門出城,放司馬懿等軍進城。
司馬懿兵不血刃復奪壺關,正猜不出諸葛亮是何用意,忽聽守城士兵來報,諸葛亮派遣重兵圍困城池,張苞等將也率領部下返回,大軍已將壺關圍得水洩不通。司馬懿連忙命人安排城防,糧草官來報,軍中存糧只夠二日。軍士又報,城中之水已為諸葛亮所部灑上迷藥,喝水士兵皆迷昏於地,救治不醒。司馬懿知道又中諸葛亮之計,不由驚慌失措。
諸葛亮算得司馬懿輕軍出城,糧草攜帶必少,又使朱恆劫掠鄴城糧草,郝昭城破之時,逃命要緊,那有閒暇多帶糧草。諸葛亮放司馬懿入城,只圍不打,城中兵士糧草不繼,又無飲水,自然不戰而敗。
郝昭派城中兵士打井取水,水尚未打出,諸葛亮統領重兵來攻,還是用火藥炸開城牆,大兵長驅直入,此時守軍口喝難奈,那裡有心作戰?司馬懿所部大敗,其長子司馬師為張苞所殺,鄧艾子鄧忠為龐德所擒,不降而死。