打败曹休以后,陆逊给诸葛亮写信,请诸葛亮率兵攻打长安,共同夹击曹魏,使曹睿首尾不能相顾。当时,诸葛亮已经做好了再次北伐的准备,收到陆逊的信件,便召集诸将商议北伐。这时,赵云之子赵统、赵广赶来禀报,说赵云因病亡故了。诸葛亮痛哭不已,说道:“我失去了一只手臂。”刘禅得知赵云病故的消息,放声大哭,追赠赵云为大将军、顺平侯。
建兴六年秋,诸葛亮率三十万大军再次北伐,命魏延为先锋,杀奔陈仓道口而来。曹睿得到消息,召集文武大臣商议。大将军曹真自告奋勇,请求率兵出战,并举荐陕西狄道人王双为先锋。曹睿便拜曹真为大都督,王双为先锋,赶往长安迎战。
蜀军来到陈仓道口,见有郝昭筑城守卫,挡住了大路,便回报诸葛亮。诸葛亮说道:“只有占领陈仓,才能继续进军。”便令魏延攻打陈仓,结果久攻不下。部将靳(jìn)祥说道:“我与郝昭都是陇西人,自小相识,我愿意前去劝降郝昭。”诸葛亮便派他去了。郝昭见了靳祥,说道:“既然诸葛亮是我的仇敌,你我各事其主,也就是仇敌了。不必多说,出城去吧!”说罢,便将靳祥赶出去了。
诸葛亮得知靳祥劝降失败,勃然大怒,传令立即攻城,一连围攻二十多天,都无法攻入陈仓城。正在这时,王双杀到,诸葛亮令小将谢雄、龚起迎战,结果都被王双杀死了。诸葛亮大惊,急忙令廖化、王平、张嶷出战。王双与张嶷交锋,使用诈败计,用流星锤打伤了张嶷。诸葛亮见陈仓久攻不下,与姜维商议对策。姜维说道:“不如令王平、李恢守住街亭小路,令魏延守住陈仓道口,丞相亲率大军袭取祁山。”于是,诸葛亮便留下魏延等人驻守营寨,自己亲率大军望祁山进发。
姜维派心腹面见曹真,称当初投降诸葛亮是迫不得已之举,现在愿意重回魏国,并与曹真约定里应外合活捉诸葛亮。曹真大喜过望,令来使回复姜维,准许他投降。中护军费耀劝谏道:“姜维足智多谋,这恐怕是他和诸葛亮商定的诈降计。”曹真不听,费耀便说道:“我愿替都督接应姜维,如果成功,功劳算归都督一人。”曹真便令费耀率五万兵马到斜谷接应姜维。
费耀与蜀军交战,蜀军连败三阵,费耀率兵紧紧追赶。到第二天申时,诸葛亮亲自率兵迎战,费耀对部将说道:“如果蜀军杀来,便立即撤退。等望见姜维在蜀军阵后放火,再杀回来活捉诸葛亮。”诸葛亮令马岱、张嶷兵分两路出击,费耀转身就走,连退三十里,见蜀军阵后起火,便转身杀来。正在这时,关兴、张苞一左一右从山谷中杀出,魏兵抵挡不住,纷纷逃命。费耀这才知道果真中计,慌忙拨马逃命,又被姜维拦住去路。费耀见不能突出重围,自刎而死。姜维见到诸葛亮,说道:“可惜没有杀死曹真。”诸葛亮也叹息道:“大计小用了。”
曹真得知费耀兵败的消息,惊慌失措,急忙向曹睿求救。曹睿召来司马懿商议。司马懿说道:“诸葛亮不能从陈仓道口出兵,必然不便运输粮草。陛下可传令曹真坚守不战,只需一个月,诸葛亮必然因缺粮而退兵。等诸葛亮退兵之时,再派兵追击,定能大败蜀军。”曹睿便派太常卿韩暨为使,传令曹真坚守不战。曹真得到命令,传令全军坚守,一面令王双袭扰蜀军的粮道,一面令孙礼将硫磺等物伪装成粮草,引诱蜀军来夺。
诸葛亮得知孙礼从陇西运送粮草到祁山以西的消息,笑道:“这是曹真的计策,粮车上装的一定是火器,等我军前去劫粮,他就点燃粮车攻击我军,同时派大军偷袭我军营寨。”于是决定将计就计,吩咐诸将各自准备。结果,孙礼被马岱、张嶷、马忠打败,张辽之子张虎、乐进之子乐琳被吴班、吴懿打败,关兴、张苞又夺了魏军的营寨。孙礼收拢败兵,逃到曹真营中去了。曹真见了,更加不敢出战了。
诸葛亮见魏兵不敢出战,便下令撤兵,又传令据守陈仓的魏延也一起撤兵。原来,蜀军缺粮,曹军又坚守不出,为了避免被魏军切断归路,诸葛亮只得下令撤兵了。过了一天之后,曹真才得知蜀军退走的消息,追悔莫及。魏延接到命令,当晚就退兵而去。王双率兵赶来,半路上得知营寨起火,又急忙撤退。正在此时,魏延突然从树林中杀出来,一刀砍死王双,魏军大败。曹真得知王双被杀,伤感不已,竟然因此生病,也退回洛阳去了。
建兴七年四月,张昭等人拥立孙权称帝。孙权立皇子孙登为太子,封顾雍为丞相,陆逊为上将军,又派使者到成都,与蜀汉结盟。刘禅听取诸葛亮的建议,命陈震为使者,到江东庆贺孙权称帝,又建议东吴出兵攻打魏国,孙权便命陆逊训练人马,准备进攻魏国。联络东吴以后,诸葛亮决定再次出兵北伐。
当时,陈仓守将郝昭病重,诸葛亮得到消息,传令魏延、姜维在三天之后率兵围攻陈仓城,又嘱咐他们如果看到起火,便全力攻城。郭淮得知郝昭病重的消息,立即派张郃赶来接替郝昭。郝昭得知蜀军攻来,急忙令人上城防守,不料各个城门都着了火,魏军大乱,关兴、张苞趁机进入陈仓城。郝昭得知蜀军进城的消息,惊慌失措,当场毙命。三天之后,魏延、姜维才来到陈仓城下,诸葛亮此时已经在陈仓城中了。原来,诸葛亮命魏延、姜维三天之后攻城是为了迷惑魏军,实际上他已经安排间谍进城放火,又率关兴、张苞连夜赶来占领了陈仓城。
诸葛亮令魏延、姜维连夜攻打散关,驻守散关的魏兵见蜀军打来,弃关逃走了。魏延、姜维刚刚进入散关,张郃就杀来了。张郃见散关已经被蜀军占领,只好退兵回去。魏延、姜维率兵掩杀,张郃大败。于此同时,诸葛亮率大军出陈仓道口,占领了建威城,又令姜维攻打武都,王平攻打阴平。
张郃回到长安,告知郭淮、孙礼等人,诸葛亮正在攻打武都、阴平。郭淮等人大惊,一面分兵守卫长安、雍城、郿城等地,一面向曹睿求救。正在此时,驻守襄阳的满宠也向曹睿报告,陆逊正在荆州操练兵马,可能很快就要打来了。曹睿急忙召集司马懿商议对策。司马懿说道:“彝陵之战以后,吴蜀同盟已经破裂,现在只是暂时结盟,陆逊不会当真出兵,只是做做样子,隔岸观火,只要打退蜀军,东吴必然罢兵。”曹睿这才放下心来,命司马懿为大都督,率兵迎战诸葛亮。
司马懿到长安以后,令张郃、戴陵率兵十万到渭水以南驻扎,又命郭淮、孙礼救援武都、阴平。郭淮、孙礼还没有到武都、阴平,就得到消息,武都、阴平已经被姜维、王平占领了,于是决定立即返回。正在此时,关兴、张苞兵分两路杀出,拦住了他们的退路。郭淮、孙礼匆忙迎战,遭遇关兴、张苞、姜维、王平的前后夹击,大败而回。张苞率兵追赶,不慎连人带马跌入山涧,摔得遍体鳞伤,只得回成都养伤。
司马懿命郭淮、孙礼前去镇守雍城、郿城,又令张郃、戴陵率兵埋伏在蜀军身后,在夜里与他前后夹击夺取蜀军营寨。当夜二更,张郃、戴陵率兵从蜀军身后杀来,半路上被粮车截住去路。张郃、戴陵见蜀军有准备,急忙传令退兵。蜀军突然从四面八方杀来,包围了张郃、戴陵。张郃奋勇拼杀,救出戴陵,率败兵逃回营寨。司马懿见张郃、戴陵败退回来,也退回去了。诸葛亮派魏延挑战,司马懿坚守不出。
诸葛亮见司马懿坚守不出,便传令退兵。司马懿得到诸葛亮退兵的消息,料定是计谋,便不派兵追杀。几天之后,探马传令消息,诸葛亮后退三十里安营扎寨。又过了几天,探马再次回报,诸葛亮又后退三十里下寨。张郃说道:“诸葛亮用的是缓兵之计,几天之后必然退回汉中。我愿意率兵追击。”司马懿便令张郃、戴陵率十万大军追击,自己率五千精兵随后接应。
诸葛亮得到司马懿派张郃、戴陵追来的消息,令王平、张翼埋伏在山谷两侧,等魏兵杀来时,一人截住司马懿的援兵,一人切断张郃的退路;令姜维、廖化埋伏在山顶上,等魏兵与王平、张翼交战时,依计而行;令关兴埋伏在山谷中,看见山上红旗招展,便率兵杀出;令吴班、吴懿、张嶷、马岱率兵迎战,只许败,不许胜,等关兴杀出时,才能奋勇杀回。众将依令而行。
张郃、戴陵追上蜀军,与吴班等人交战,追杀五十多里。这时,诸葛亮在山顶上挥动红旗,关兴见了,率兵猛然杀出,吴班等人也转身杀来,张郃等人抵挡不住,又被王平、张翼截住退路,只好奋力死战。司马懿率后军赶到,将王平、张翼围住,王平、张翼分头迎战,王平截住张郃、戴陵,张翼缠住司马懿。姜维、廖化见王平、张翼被围,便遵照诸葛亮的密令,率兵攻打司马懿的营寨。司马懿得知姜维、廖化攻打营寨的消息,急忙率兵回撤。张翼随后追杀,司马懿大败。张郃、戴陵见司马懿退走了,也率兵突围逃走。蜀军大获全胜。等司马懿赶回营寨,姜维、廖化已经退走了。
诸葛亮获得全胜之后,又下令继续进兵。正在此时,从成都传令消息,张苞死了。诸葛亮悲伤不已,失声痛哭,吐血不止,从此生病,卧床不起。诸葛亮对诸将说道:“我病得昏昏沉沉,不能再率兵作战,不如退回汉中吧。”于是传令在夜间悄悄撤兵。蜀军退走的第五天,司马懿才得到消息,长叹道:“诸葛亮有神出鬼没之计,我不是他的对手。”于是也撤兵了。