诸葛亮整军已毕,命陆逊部防守徐州、都阳,周瑜部大军攻打北海;关羽部防守谯城,姜维部驻守洛阳,自率部下二十一万大军往攻壶关。时司马懿与诸葛亮连战连败,听说诸葛亮大军来攻,大为恐慌,使人往许昌求援。曹操见无兵可援,命司马懿坚守。使曹彰、文钦、贾诩率领十万兵马攻打洛阳,盼诸葛亮回军往救。
诸葛亮知曹彰非姜维之敌,屯兵壶关,暂不攻打。司马懿见诸葛亮只围不攻,惧诸葛亮多谋,日夜巡防,不敢疏忽。诸葛亮却潜使庞德、朱恒率领十万大军夜袭邺城,于禁不敌,遣使往壶关求救。司马懿见邺城危急,不得不救,命郝昭、曹纯、司马师率八万兵马守城,自率邓忠、司马昭率七万兵马往救邺城,到得半途,遇邺城败军,合兵来夺邺城。
司马懿到得邺城,城中早被攻破。朱恒、庞德却不与司马懿交战,尽掠城中粮草缁重返回壶关。司马懿见其兵回返,知大事不妙,忙率本部军回追,却已是不及。
诸葛亮见司马懿分军,即命军士用火药炸开城墙,率军杀入壶关。郝昭等将见城池已破,率军往邺城赶来,路遇朱恒部,不敢与战,绕路而行,朱恒部奉诸葛亮将令,也不追赶,入城与诸葛亮会合。诸葛亮遂授计张苞、周泰、韩当三将,命其率十万兵马前往晋阳。
郝昭与司马懿合兵,闻诸葛亮分军攻晋阳,率大军来夺壶关。诸葛亮命诸军开北门,将城内粮草缁重尽迁于城外,自率军从北门出,放司马懿等进城。
司马懿见兵不血刃复夺壶关,正猜不出诸葛亮何意,忽听守城兵报,诸葛亮派重兵围城,张苞等部业已返回,大军已将壶关围得水泄不通。司马懿忙命人安排城防,粮草官来报,军中存粮只够二日。军士又报,城中之水已为诸葛亮军下上迷药,喝水士兵皆迷昏于地,救治不醒。司马懿知中诸葛亮之计,更是惊慌失措。
诸葛亮算得司马懿轻军出城,粮草携带必少,又使朱恒掠邺城粮草,而郝昭城破之时,逃命要紧,那有闲暇多带粮草。诸葛亮让司马懿入城,只围不打,城中兵士粮草不继,又无饮水,自是不战而败。
时郝昭使城中兵士打井取水,水尚未打出,诸葛亮统重兵来攻,还是用火药炸开城墙,大军长驱直入,时军士口喝难奈,如何有心作战?司马懿大败,其长子司马师为张苞所杀,邓艾之子邓忠为庞德所擒,不降而死。