蜀汉建兴七年夏四月,孔明率领大军驻扎在祁山,分设三座营寨,专心等候魏兵到来。
司马懿带领兵马抵达长安,张合前来迎接,并详细讲述了之前的战事。司马懿任命张合为先锋,戴陵为副将,率领十万大军奔赴祁山,在渭水之南扎下营寨。郭淮、孙礼进入营寨拜见司马懿。司马懿问道:“你们与蜀兵交过战吗?”二人回答说:“还没有。”司马懿说:“蜀兵从千里之外赶来,利于速战速决,如今他们来到这里却不主动出战,肯定另有计谋。陇西各路有什么消息吗?”郭淮说:“已经有细作探听到,各郡都十分用心防守,日夜提防,没有其他异常情况。只有武都、阴平二处,还没有消息回报。”司马懿说:“我亲自率军与孔明交战。你们二人赶紧从小路去救援武都、阴平,然后从蜀兵背后发动突袭,他们必然会自乱阵脚。”二人领命,带领五千士兵,从陇西小路去救援武都、阴平,并准备袭击蜀兵后方。路上,郭淮问孙礼:“仲达和孔明相比,谁更厉害?”孙礼说:“孔明比仲达强多了。”郭淮说:“孔明虽然厉害,但这一计足以显示仲达有过人的智谋。如果蜀兵正在攻打两郡,我们从后面包抄过去,他们怎么会不乱呢?”正说着,突然有侦察兵来报告:“阴平已经被王平攻破,武都也被姜维攻破。前方离蜀兵已经不远了。”孙礼说:“蜀兵既然已经攻破城池,为什么还在城外陈兵呢?其中必有诈,我们不如赶紧退兵。”郭淮听从了他的建议。刚传令退兵,忽然一声炮响,山背后杀出一支军队,旗帜上写着“汉丞相诸葛亮”,中央有一辆四轮车,孔明端坐在上面,左边是关兴,右边是张苞。孙礼和郭淮见此大惊失色。孔明大笑着说:“郭淮、孙礼,别想逃走!司马懿的计谋,怎么能瞒得过我?他每天派人前来挑战,却让你们偷袭我军后方。武都、阴平我已经拿下了。你们二人不早点投降,还想带兵和我决战吗?”郭淮、孙礼听后,惊恐万分。这时,背后喊杀声连天,王平、姜维率兵从后面杀来。关兴、张苞二将也从前面杀来。两面夹击,魏兵大败。郭淮、孙礼弃马爬山逃走。张苞看到后,纵马追赶,没想到连人带马跌入山涧。后军急忙将他救起,可他头部已经跌破,孔明派人将他送回成都养病。
郭淮、孙礼逃脱后,回去拜见司马懿,说:“武都、阴平二郡已经失守。孔明埋伏在要道,前后夹击,我们因此大败,只能弃马步行,才得以逃回。”司马懿说:“这不是你们的过错,孔明智谋在我之上。你们可再带兵把守雍、郿二城,千万不要出战。我自有破敌的计策。”二人拜别而去。司马懿又叫来张合、戴陵,吩咐道:“如今孔明得到了武都、阴平,肯定会安抚百姓以稳定民心,不会在营中。你们二人各带一万精兵,今晚出发,抄到蜀兵营寨后方,一起奋勇杀过去。我则在前面布阵,等蜀兵阵脚大乱,我就率领大军全力进攻。两军合力,就能夺取蜀寨。如果能占据此地的山势,破敌就容易了。”二人领命带兵出发。戴陵在左,张合在右,各自从小路进发,深入到蜀兵后方。三更时分,他们来到大路,两军相遇,合兵一处,从蜀兵背后发起攻击。没走三十里,前军停了下来。张合、戴陵亲自骑马查看,只见数百辆草车横在路中。张合说:“这里肯定有埋伏。我们赶紧找路回去。”刚传令退兵,只见满山火光冲天,战鼓号角声震耳欲聋,伏兵从四面八方涌出,将二人团团围住。孔明在祁山上大声喊道:“戴陵、张合,听我一言:司马懿以为我去武都、阴平安抚百姓,不在营中,所以派你们二人来劫寨,却中了我的计谋。你们二人只是无名小将,我不杀你们,快下马投降!”张合大怒,指着孔明骂道:“你不过是个山野村夫,竟敢侵犯我国境界,还敢说这种大话!我要是捉住你,定将你碎尸万段!”说完,纵马挺枪,杀上山来。山上箭石如雨般落下。张合无法上山,于是拍马舞枪,冲出重围,无人能挡。蜀兵将戴陵围困在核心。张合杀出原路,不见戴陵,又奋勇翻身杀入重围,救出戴陵返回。孔明在山上,看到张合在万军之中往来冲突,越发英勇,便对左右说:“曾听闻张翼德大战张合,人们都十分惧怕。我今日亲眼所见,才知道他的勇猛。如果留下此人,日后必为蜀中的大患。我一定要除掉他。”于是收兵回营。
司马懿率兵布好阵势,只等蜀兵阵脚大乱就一起进攻。忽然看到张合、戴陵狼狈归来,报告说:“孔明早有防备,我们因此大败而归。”司马懿大惊道:“孔明真是神人!我们不如暂且退兵。”随即传令让大军全部撤回本寨,坚守不出。
孔明大获全胜,缴获的器械、马匹数不胜数,于是率领大军回到营寨。他每天让魏延前去挑战,魏兵却坚守不出。一连半个月,双方都没有交战。孔明正在营帐中思考对策,忽然有士兵报告,天子派遣侍中费祎带着诏书来了。孔明将费祎接入营中,焚香行礼完毕,打开诏书阅读:
街亭之役,过错在于马谡;而你主动承担责任,深深自责并贬抑自己的官职。我不好违背你的意愿,便同意了你所请。前年你出征,斩杀王双;今年再次出征,郭淮败逃;你收降氐、羌,收复武都、阴平二郡:威震敌胆,功勋显着。当今天下局势动荡,元凶还未被消灭,你肩负重任,掌管国家大事,却长久地自我贬抑,这不利于发扬国家的伟业。现在恢复你的丞相之职,你不要推辞!
孔明听完诏书,对费祎说:“我的北伐大业还未完成,怎么能恢复丞相之职呢?”坚决推辞不接受。费祎说:“丞相如果不接受职务,不仅违背天子的心意,也会让将士们感到心寒。您还是暂且接受吧。”孔明这才接受了丞相之职。费祎告辞离去。
孔明见司马懿始终不出战,便想出一条计策,传令让各处营寨都拔营起行。有细作将此消息报告给司马懿,说孔明退兵了。司马懿说:“孔明肯定有大的谋略,我们不可轻举妄动。”张合说:“这肯定是因为他们粮草耗尽才回去的,我们为什么不追击呢?”司马懿说:“我估计孔明去年大丰收,今年麦子又成熟了,粮草充足。虽然转运艰难,但也能支撑半年,怎么会轻易退兵呢?他见我们连日不战,所以用这个计策来引诱我们。我们可以派人远远地侦察。”士兵侦察后回报说:“孔明在离此地三十里的地方扎营。”司马懿说:“我就知道孔明不会真的退兵。我们暂且坚守寨栅,不可轻易前进。”过了十天,没有任何消息,也不见蜀兵前来挑战。司马懿再次派人侦察,回报说:“蜀兵已经拔营离开了。”司马懿不信,便换上普通士兵的衣服,混杂在军中,亲自前去查看,果然看到蜀兵又后退三十里扎营。司马懿回到营中对张合说:“这是孔明的计策,我们不可追赶。”又过了十天,再次派人侦察,回报说:“蜀兵又后退三十里扎营。”张合说:“孔明用的是缓兵之计,逐渐退往汉中,都督为什么还心存疑虑,不早点追击呢?我愿意前去决一死战!”司马懿说:“孔明诡计多端,我们要是有什么闪失,就会挫伤我军的锐气。不可轻易前进。”张合说:“我去如果战败,甘愿接受军令处罚。”司马懿说:“既然你要去,可以分兵两路,你率领一路先行,一定要奋力死战。我随后接应,以防有伏兵。你明天先出发,到半路驻扎,后天交战,这样兵力才不会疲乏。”于是分兵完毕。第二天,张合、戴陵率领数十员副将、三万精兵,奋勇先行,到半路扎下营寨。司马懿留下许多兵马守寨,只带领五千精兵,随后进发。
原来,孔明秘密派人侦察,得知魏兵在半路停歇。当晚,孔明召集众将商议说:“如今魏兵前来追击,必然会拼死一战,你们必须以一当十。我会派伏兵截断他们的后路,这不是智勇双全的将领,可担当不了这个任务。”说完,用目光看向魏延。魏延低下头不说话。王平站出来说:“我愿意承担这个任务。”孔明说:“如果有闪失,怎么办?”王平说:“我愿意接受军令处罚。”孔明感叹道:“王平肯舍身冒箭石之险,真是忠臣啊!虽然如此,无奈魏兵分两路前后而来,会截断我们的伏兵,王平纵然智勇双全,也只能抵挡一路,怎么能分身两处呢?必须再找一位将领一同前去才好。怎奈军中再没有舍生忘死、冲锋在前的人了!”话还没说完,一位将领站出来说:“我愿意前往!”孔明一看,是张翼。孔明说:“张合是魏国的名将,有万夫不当之勇,你不是他的对手。”张翼说:“如果有失误,我愿意把首级献在您的帐下。”孔明说:“你既然敢去,可以和王平各带一万精兵,埋伏在山谷中,等魏兵追上来,等他们全部过去,你们就带领伏兵从后面掩杀。如果司马懿随后赶来,就分兵两路:张翼带领一路挡住后队,王平带领一路截断前队。两军必须拼死作战。我自有其他计策相助。”二人领命带兵而去。孔明又叫来姜维、廖化,吩咐道:“给你们二人一个锦囊,带领三千精兵,放倒军旗,停止击鼓,埋伏在前山之上。如果看到魏兵围住王平、张翼,情况十分危急,不要去救援,只打开锦囊查看,自然有解围的办法。”二人领命带兵而去。孔明又把吴班、吴懿、马忠、张嶷四将叫到跟前,低声吩咐说:“如果明天魏兵到来,他们锐气正盛,你们不可正面迎敌,要边战边退。只等关兴带兵来助战时,你们就回军追杀,我自有兵马接应。”四将领命带兵而去。孔明又叫来关兴,吩咐道:“你带领五千精兵,埋伏在山谷中,只等山上红旗飘动,就带兵杀出。”关兴领命带兵而去。
张合、戴陵率领兵马前来,行军速度快如疾风骤雨。马忠、张嶷、吴懿、吴班四位将领迎战,出马上前与他们交锋。张合十分恼怒,指挥士兵追杀,蜀兵则边战边退。魏兵追赶了大约二十多里,当时正值六月,天气酷热难耐,人和马都汗流浃背,汗水就像泼出来的一样。追到五十里外时,魏兵全都气喘吁吁。孔明在山上挥动红旗,关兴带兵杀出。马忠等四位将领,也一起领兵杀了回来。张合、戴陵拼死抵抗,不肯后退。突然喊声震天,两路军队杀出,原来是王平、张翼。他们各自奋勇杀敌,截断了魏兵的后路。张合大声对众将喊道:“你们都到这儿了,不拼死一战,还等什么时候!”魏兵奋力突围,却无法脱身。这时,背后鼓角齐鸣,司马懿亲自率领精兵赶到。司马懿指挥众将,将王平、张翼围困在核心。张翼大声呼喊:“丞相真是神人!早就料定了一切,肯定有良策。我们一定要拼死一战!”于是分兵两路:王平带领一路截住张合、戴陵,张翼带领一路全力抵挡司马懿。两边拼死战斗,喊杀声接连不断。
姜维、廖化在山上观察,看到魏兵气势强盛,蜀兵形势危急,渐渐抵挡不住。姜维对廖化说:“情况如此危急,我们可以打开锦囊看看计策。”两人拆开锦囊一看,里面写着:“如果司马懿派兵把王平、张翼围困得极其危急,你们二人就分兵两路,直接袭击司马懿的营寨,司马懿必定会急忙退兵,你们可以趁乱进攻。就算夺不下营寨,也能大获全胜。”两人十分高兴,立即分兵两路,径直向司马懿的营寨杀去。
原来司马懿也担心会中孔明的计策,一路上不断派人传递消息。司马懿正在催促战斗的时候,忽然有流星马飞速来报,说蜀兵分两路去攻打大寨了。司马懿大惊失色,对众将说:“我就知道孔明有计谋,你们不信,非要勉强追击,结果误了大事!”于是急忙带兵回救,军心大乱,士兵们慌乱奔走。张翼随后掩杀,魏兵大败。张合、戴陵见形势孤立,也向偏僻的山间小路逃走,蜀兵取得了大胜。背后关兴带兵接应各路蜀兵。司马懿大败一场,逃入营寨时,蜀兵已经撤离。司马懿收拢败军,责骂众将说:“你们不懂兵法,只凭一股血气之勇,强行出战,才导致这场失败。今后绝不许再轻举妄动,再有不遵守命令的,一定按军法处置!”众将都羞愧地退下了。这一战,魏军死伤众多,遗弃了无数的马匹和器械。