孔明回到成都,用李严的儿子李丰为长史,积草屯粮,养息将士。不觉三年已过,到了建兴十一年二月,孔明见兵精粮足,奏请再次北伐。刘禅满足于一时的太平,不想让孔明出兵。孔明坚持出兵。太史谯周说:“近来成都屡次出现灾异,魏国旺气正盛,不利伐魏。丞相只可防守,不可轻举妄动。”孔明不听,连夜赶到汉中,与众将商议出师事宜。忽有人报,关兴病亡。孔明哭昏在地,半晌才醒,叹道:“可怜忠义之人,天不给他寿命!这次出师又少一员大将!”他让姜维、魏延为先锋,三十四万蜀军兵分五路,到祁山会师,李恢运送粮草到斜谷等候。
魏国因去年有青龙从摩坡井中飞出,改元青龙。魏主得知孔明再出祁山,召来司马懿商量对策。司马懿说:“臣夜观天象,中原旺气正盛,孔明逆天而行,是自取败亡。臣愿前往破敌,保夏侯渊的四个儿子同行。”夏侯渊的四个儿子,长子名霸,次子名威,三子名惠,四子名和。霸、威二人弓马娴熟;惠、和二人饱读兵书。四人经常声称要为父报仇,他就保霸、威为先锋,惠、和为行军司马。魏主拜司马懿为大都督,各处将士都听他调度。司马懿来到长安,调来四十万人马,都到渭滨下寨。又派五万人在渭水上搭了九座浮桥,让夏侯霸、夏侯威过河安营。郭淮、孙礼来到,司马懿让他们在北原下寨,深沟高垒,按兵不动。孔明再到祁山,下了五座大寨,自斜谷到剑阁,又下十四座寨,分屯军马,为长久计。他得知郭淮在北原下寨,就分派众将明攻北原,暗烧浮桥,要一举消灭渡河的魏军先锋。司马懿得知,定计反击,杀得蜀军大败,吴班中箭落水而死。孔明正无计可施,费祎从成都来到,于是就让他出使东吴,请孙权发兵。他持孔明的书信赶到建业,呈交给孙权。孙权见孔明许他共取中原,平分天下,就计划调动三路大军,分取新城、襄阳、淮阳。孙权问:“孔明用谁为先锋?”费祎答:“魏延”。他告诫说:“此人心术不正,一旦孔明不在,必然会成为祸患。”费祎回到祁山,先说了孙权已答应出兵的事情,随后又说了孙权对魏延的看法。孔明说:“我知道此人,但他还有利用的价值。以后的事我自有安排。”孔明送走费祎,魏军偏将郑文来降,他自称与秦朗同领人马,司马懿让秦朗为前将军,却不加他的官职,他非常气愤,所以来投丞相。正说着,小军报秦朗单挑郑文出战。孔明让郑文出马,二人交战只一回合,郑文就一刀劈死了秦朗。待他回营,孔明喝令左右把他绑去斩了。郑文大叫:“小将无罪!”孔明说:“我认识秦朗,你杀的是秦朗的弟弟秦明。司马懿派你来诈降,若不实说,立即斩首。”郑文只好说出实话。孔明让他写下书信,让司马懿夜间来劫寨,这样就可立功赎罪,而且还能得到重用。郑文写完书信,孔明下令先把他押起来。孔明挑选一名有口才的军士,吩咐一番,派往魏营送信。司马懿看了书信,又仔细盘问了军士,军士对答如流。司马懿就让他回去告诉郑文,今天二更劫寨,举火为号。军士回去告诉孔明,孔明就仗剑作法,然后吩咐诸将依计行事,他自带数十人,坐在山上,指挥众军。
司马懿本想带着两个儿子亲自劫寨,司马师怕万一出意外,提议还是派别人当先,司马懿在后接应。司马懿就让秦朗领一万兵劫寨,他领兵接应。当夜二更时分,突然阴云密布,对面不见人。司马懿高兴万分,命人长驱直入。秦朗冲进蜀寨,不见一人,忙叫退兵,王平、张嶷、马岱、马忠领两路兵杀来。司马懿见蜀营火光冲天,只顾催兵接应,忽听炮声连天,魏延、姜维从左右杀来。魏兵大败,四散奔逃,秦朗和他所带的一万兵都被消灭,司马懿逃回了本寨。三更过后,天色放晴,方才阴云遮天原来是孔明作遁甲之法。孔明回寨,把郑文斩了。孔明乘车察看地形,见一个山谷,形如葫芦,问向导:“这是什么谷?”向导说:“这叫上方谷,又叫葫芦谷。”孔明回寨,吩咐裨将胡忠如此这般。命令随军匠人到谷中制造木牛流马,派马岱领兵防守,不准任何人擅入。胡忠就在谷中监督匠人,依法制造。一天,杨仪来报:“粮米都运到剑阁,道路不好,搬运不便,怎么办?”孔明说:“我已造下木牛流马,搬运粮食,非常便利。牛马又不吃草饮水,可昼夜不停运输。”过了几天,造好的牛马,上山下岭,非常灵便,众军都欢喜异常。孔明就命高翔领一千军驾着木牛流马,从剑阁往祁山大寨运粮。司马懿得知蜀军用木牛流马运粮,就派张虎、乐琳各领五百兵,装扮蜀兵,抢上三五匹就回来。二人于夜间抄小路埋伏好,就见高翔领兵驱赶木牛流马过来。待快要过完,伏兵杀出,蜀兵扔下几匹就逃。张虎、乐琳抢回本寨,司马懿见牛马进退自如,就像活的一样,高兴万分,召来能工巧匠,命他们按尺寸仿造。不到半月,就造出两千多匹,和孔明造的一样,也会奔走。他让镇远将军岑威,带一千军士驱赶木牛流马去陇西运粮。高翔报告孔明,魏兵抢走五六匹牛马。孔明说:“我就是要他抢。他抢去后必然要仿造,那时再看我的计策。”过了不几天,探子报魏军仿造出木牛流马,去陇西运粮了。孔明吩咐王平领一千兵,扮作魏军,如此行事;派张嶷领五百军,扮作六丁六甲神兵,如此行事;派姜维、魏延各领一万兵,去北原接应;派马忠、马岱领二千兵去渭南挑战。岑威领军驱赶木牛流马,从陇西运来粮食,见迎面过来一支巡逻队,也没在意。待到两支队伍在路上相错,突听一声大喊,蜀兵冲杀过来,魏兵当时被杀了大半,岑威被王平一刀斩了。王平就命部下驱牛马奔蜀寨。郭淮得报,急忙领兵来救,王平让士兵把牛马舌头一扭,扔下就跑。郭淮带士兵驱赶牛马,牛马一动不动。正无计可施,魏延、姜维各领兵杀来,王平也扭头杀回,郭淮大败。王平让士兵把牛马舌头扭回,赶上就走。郭淮看见,想领兵再追,只见山后烟云突起,拥出一队神兵,拥上木牛流马,如飞而去。司马懿听说北原兵败,忙领兵来救,一声炮响,张翼、廖化领兵杀出,魏兵四处逃散,司马懿单枪匹马,朝林中逃去。廖化紧紧赶来,司马懿绕树而跑。廖化一刀砍在树上,拔出刀来,见司马懿的金盔在东面,就拾起金盔望东追去。谁知司马懿早已向西逃远了。王平早已回寨,缴获粮食万余石。司马懿回寨,心中正烦闷,圣旨来到,说是东吴入侵,朝廷正在商议退敌,让他深沟高垒,坚守不战。
魏主起三路兵迎战东吴。他采用满宠的计策,从湖口夜袭吴军,火攻诸葛瑾,大获全胜。陆逊与孙权的联络密信被魏军截获。
陆逊佯装攻打襄阳,将魏军的注意力吸引过去,然后悄然撤军。等魏军发觉,三路吴军已安然过江。魏主就驻扎在合淝,等待时机。孔明为与魏军长久相峙,让蜀兵和魏民共同种田,收获军得一分,民得两分,互不侵犯。司马师说:“蜀军抢了我们很多粮草,又在渭滨屯田,看样子想长期驻扎,父亲为什么不跟他们决一死战?”司马懿说:“我奉旨坚守,不可妄动。”孔明见司马懿始终不肯出战,就命马岱在上方谷中建造木栅,堆积干柴,用柴草搭成窝棚,内外都埋上地雷。又命军士在谷口白天举七星号带,夜间点七盏明灯,让魏延把司马懿引来。孔明又吩咐高翔驱赶木牛流马,各装粮食,只要被敌军抢去,便是功劳。最后吩咐将士,别的兵来攻,就各自逃散,司马懿来攻,合力攻渭南,断他的退路。夏侯惠、夏侯和二人见蜀兵如此,多次向司马懿请战。司马懿就让二人各领五千兵出战。二人领兵正行,撞见蜀兵用木牛流马运粮,一阵冲杀,蜀兵败走,夺下木牛流马。次日出战,又夺下许多牛马。司马懿审问俘虏,蜀兵说:“孔明见都督坚守不出,让我们四散屯田,长久对峙。”半月之内,夏侯惠、夏侯和连打胜仗,司马懿越来越高兴。这天,他又审问俘虏,蜀兵说:“孔明在上方谷四十里安营,让我们每日把粮草都运到谷中。”他就命令众将:“明天你们合力攻取祁山大寨,我随后接应。”众将走后,司马师不明白父亲为什么这样安排。司马懿说:“我军攻打祁山寨,蜀兵必然会去救,我却偷偷到上方谷烧他们的粮草,他们必定大败。”次日,魏兵陆续出营,攻打祁山寨。四下里蜀兵虚张声势,都去救应。司马懿父子三人领中军杀奔上方谷。魏延见司马父子都来了,舞刀迎战,斗不几回合便朝七星旗处败逃。司马懿见只一员敌将,蜀兵人少,放心追去。追到谷口,他见里面没有埋伏,只有屯粮的草棚,就追进谷中,却不见了魏延,心中生疑,忙命退兵,忽听满山高喊,火把纷纷落下,堵住谷口。谷中草棚燃起熊熊大火,地雷轰隆隆爆炸。魏兵焦头烂额,司马懿手足无措,和两个儿子抱头痛哭。谁知这时,忽听一声霹雳,暴雨倾盆而下,浇灭了烈火,淋湿了火药。司马懿忙与二子往外冲杀,又逢张虎、乐琳赶来接应,马岱兵少,阻拦不住,只好放他们逃走了。他们逃到魏营,见已被蜀军占领,只好逃到北岸,烧断了浮桥。孔明眼看司马父子就要完蛋,正在高兴,一场大雨破坏了他的全盘计划,不由长叹道:“谋事在人,成事在天。”