郝昭军赶赴许昌之际,洛阳形势已危。洛阳军并未受到河北大捷鼓舞,为诸葛亮攻心之术搅得军心涣散。曹操数支援军,均为诸葛亮设计击退。
时曹丕见洛阳粮草将尽,聚众相议。邓艾虽为智谋之士,也毫无良策。钟繇曰:“今河北已定,郝昭、张辽两军已赴许昌、北海,以张辽部兵出北海,许昌、定陶两军夹击谯城,使诸葛亮分军往救,洛阳之围可解也。现洛阳粮草将尽,军无战心,局势已危也。当思何策补充粮草。”贾诩时在洛阳,曰:“今诸葛亮截断粮道,何不反截其粮,以为我用。”邓艾然之。曹丕遂命邓艾、曹仁、夏侯渊三将挑选精兵乘隙劫粮。又遣使赴许昌,使曹操攻击谯城、都阳,迫使诸葛亮分军,以解洛阳之危。
洛阳赴许昌使者为魏延巡军所擒,献于孔明帅帐。孔明温言询之,探听出洛阳劫粮出兵之计。遂思得一计,升帐点将。命王平、张嶷率兵三万诈作护粮军,使粮车内盛易燃易爆之物,见曹兵来即将粮车围成一团,点火后弃粮车,率军退于侧旁,见敌军与伏兵交接,即从后掩杀。使魏延、谭雄率军五万,阻住曹军劫粮之兵。命李严率一万军换上曹军衣甲,推百余粮车诈为劫粮归军,诈开城门。命姜维、张苞、朱恒率军八万随李严军后,见诈开城门,率军攻入城内。自与余将率余军七万伏于许昌归路等候曹丕败军。
王平、张嶷部夜间行军,故意延缓,使曹军探子获知。探子急报邓艾,邓艾即与曹仁、夏侯渊点精军六万前往劫粮。邓艾军至,见王平、张嶷命军士将粮车围成一圈,点火后即向侧旁撤去。邓艾等大喜,命令军士救火,军士刚趋向前,只听轰得一声,粮车顿成一片火海,近前兵士被烧伤者众。邓艾见大事不妙,率军回撤。此时魏延伏兵起,两军相战。邓艾军以魏延军兵少,率军力战。此时王平、张嶷部又从侧面杀来,邓艾军受夹击,大败。
时李严已经诈开城门,姜维等将率军杀入。城内守将王双等见大事不妙,聚兵保护曹丕,开东门撤往许昌。邓艾率军杀到城侧,只望城中守军出城接应,见城门大开,刚要涌入,姜维部从城中杀出,一排强驽袭来,邓艾不防,当即毙命。曹仁、夏侯渊等人见大事不妙,率败军往许昌方向退去。姜维、魏延等将率军从后追击。
诸葛亮算定曹军兵败,必走许昌。于许昌归途路狭处布阵,使一万强驽兵摆于阵前,三万长枪兵摆成长方阵随之其后,后面轻骑兵为后军。曹丕等率军来到,突见火把齐明,前路黑压压一片大军,强驽射来,前军死伤无数。正要后退,却见曹仁等败军至,得知邓艾阵亡,诸将更乱。此时姜维、魏延统军从后杀来,强驽不绝,伤兵无数。
曹军避无所避,王双等将只好统军向前杀来。只见诸葛亮将令旗一摆,强驽兵从两侧撤到阵后,露出长枪兵来,长枪兵行动虽缓,然阵势整齐,兵刃极长,所到之处,曹兵无所阻当。王双等将见势危,率亲兵保曹丕弃掉马匹,步行从两侧山路逃命。洛阳十五万守军,经这场大战,死伤二万余众,余者见无路可逃,纷纷请降,降者近八万。随曹丕间小路而逃者,路上又被诸葛亮遣文聘、苏飞两将率轻骑兵两万沿途追袭,逃至许昌者,仅二万余众。洛阳守将夏侯和、钟繇、吕虏乱军中被杀。
此战让曹军胆战心惊,提及诸葛亮军威,无人敢于应战。诸葛亮收得降兵八万,命编于周瑜部两万、陆逊部二万,余兵编于部下诸军。洛阳既得,弘农、宛城皆成内郡,诸葛亮命苏飞率军三万驻守弘农,张嶷率军三万驻守宛城,余军皆赴洛阳,洛阳大军共三十九万。诸葛亮整顿洛阳军务,训练兵马,准备攻打许昌。
曹操此时见洛阳城陷,许昌面临大军压境,调配各路文武,重新布防。曹操以壶关为河北诸郡门户,临洛阳甚近,为战略要地,命司马懿、郝昭、邓忠、曹纯、司马师、司马昭率军十五万驻守壶关。张辽、夏侯淳、程昱、于禁、潘凤、李典等率十二万兵马驻守北海。曹仁、夏侯渊、郭嘉、夏侯霸、王双、张合率十三万兵马驻守定陶;王子服、荀攸率军五万守晋阳;于禁、郭奕率军五万守邺城;夏侯德、陈登率军五万守濮阳;张燕、刘岱率军五万守陈留;杨彪、陈群率军一万守北平;吴质、耿纪率军一万守襄平;吴纲、曹爽率军一万守代县;严政、左贤王率军一万守乐陵;王睿、杨修率军一万守南皮;夏侯玄、孔融率军一万守易京;曹洪、夏侯威率军一万守官渡;夏侯恩、贾充率军一万守界桥。自与余将率军二十万守许昌。
诸葛亮整军已毕,命陆逊部防守徐州、都阳,周瑜部大军攻打北海;关羽部防守谯城,姜维部驻守洛阳,自率部下二十一万大军往攻壶关。时司马懿与诸葛亮连战连败,听说诸葛亮大军来攻,大为恐慌,使人往许昌求援。曹操见无兵可援,命司马懿坚守。使曹彰、文钦、贾诩率领十万兵马攻打洛阳,盼诸葛亮回军往救。
诸葛亮知曹彰非姜维之敌,屯兵壶关,暂不攻打。司马懿见诸葛亮只围不攻,惧诸葛亮多谋,日夜巡防,不敢疏忽。诸葛亮却潜使庞德、朱恒率领十万大军夜袭邺城,于禁不敌,遣使往壶关求救。司马懿见邺城危急,不得不救,命郝昭、曹纯、司马师率八万兵马守城,自率邓忠、司马昭率七万兵马往救邺城,到得半途,遇邺城败军,合兵来夺邺城。
司马懿到得邺城,城中早被攻破。朱恒、庞德却不与司马懿交战,尽掠城中粮草缁重返回壶关。司马懿见其兵回返,知大事不妙,忙率本部军回追,却已是不及。
诸葛亮见司马懿分军,即命军士用火药炸开城墙,率军杀入壶关。郝昭等将见城池已破,率军往邺城赶来,路遇朱恒部,不敢与战,绕路而行,朱恒部奉诸葛亮将令,也不追赶,入城与诸葛亮会合。诸葛亮遂授计张苞、周泰、韩当三将,命其率十万兵马前往晋阳。
郝昭与司马懿合兵,闻诸葛亮分军攻晋阳,率大军来夺壶关。诸葛亮命诸军开北门,将城内粮草缁重尽迁于城外,自率军从北门出,放司马懿等进城。
司马懿见兵不血刃复夺壶关,正猜不出诸葛亮何意,忽听守城兵报,诸葛亮派重兵围城,张苞等部业已返回,大军已将壶关围得水泄不通。司马懿忙命人安排城防,粮草官来报,军中存粮只够二日。军士又报,城中之水已为诸葛亮军下上迷药,喝水士兵皆迷昏于地,救治不醒。司马懿知中诸葛亮之计,更是惊慌失措。
诸葛亮算得司马懿轻军出城,粮草携带必少,又使朱恒掠邺城粮草,而郝昭城破之时,逃命要紧,那有闲暇多带粮草。诸葛亮让司马懿入城,只围不打,城中兵士粮草不继,又无饮水,自是不战而败。
时郝昭使城中兵士打井取水,水尚未打出,诸葛亮统重兵来攻,还是用火药炸开城墙,大军长驱直入,时军士口喝难奈,如何有心作战?司马懿大败,其长子司马师为张苞所杀,邓艾之子邓忠为庞德所擒,不降而死。