建兴八年秋天,曹真上表请求伐蜀国。魏主令他为征西大都督,司马懿为副都督,引兵四十万从长安出发,攻取汉中,并令郭淮领军支援。
孔明见魏军来攻,叫王平、张嶷领一千兵去陈仓古道防守,二人觉得一千兵难以挡住四十万魏军,不肯去。孔明说他夜观天象,将有长期大雨,魏军必然不敢来攻蜀国,二人才去了。
曹真领兵驻扎于陈仓,果然连下大雨,平地水深三尺,士兵无法睡觉,马无草料,军无战心。魏主命令撤兵。孔明知司马懿有埋伏,也不追赶。
曹真见蜀兵不追,便将埋伏的人马撤回。司马懿说蜀军将从两谷出兵夺祁山,曹真不信。两人打赌,各守一个谷口。
孔明令魏延、陈式率领二万人马去箕谷,孔明令他们不要轻易前进,以防魏兵在箕谷埋伏。魏延、陈式不听。陈式自领五千兵出箕谷,被司马懿的伏兵杀得只剩几百人马,幸有魏延将他救出。
曹真连续七日未见蜀军出现,便放松了警惕。结果曹真被包围,魏将秦良被杀。司马懿派人将曹真救出。
孔明得胜,领军又出祁山,按军法斩了陈式。曹真赌输了,一气之下竟卧病不起。孔明又写了封信送给曹真,信中说曹真无能,不识天文地理,以至折兵损将,曹真看罢,气得大叫一声,死于军中。
魏主催司马懿出战,司马懿要与孔明先斗阵法。
孔明摆出八卦阵,冲阵的魏军都被捉住了,孔明不杀他们,给他们脸上涂上黑墨,光着上身释回。司马懿怒气冲天,令三军一齐冲阵,不料关兴、姜维杀来,魏军三面受敌,司马懿拼死杀出,已伤亡了一大半人马。
都尉苟安解送粮草误了十天,孔明要按军法斩他,长史杨仪替他求情,孔明便让军士打了他八十军棍。苟安心里怀恨便投降了魏军,司马懿让他去成都散布谣言说∶“孔明早晚要纂位自立为皇帝的。”
刘禅听信谣言,下诏召回了孔明。孔明为防备司马懿追击,下令各军撤退时今日掘一千灶, 明日掘两千灶 ,后日掘三千灶,用减兵添灶之计迷惑司马懿,使他不敢追赶。
孔明回到成都,朝见后主刘禅,奏问有何大事,刘禅支吾其辞,答非所问。孔明召唤众官查问,才知是苟安散布流言。急派人捉苟安,苟安已投靠魏国去了。孔明便把传播流言的宦官杀了。
建兴九年二月,孔明再出兵伐魏。司马懿令张?领兵在祁山阻挡蜀军,自己则和郭淮领兵保护天水各城。
到了收麦季节,孔明让军士抢收陇西麦子以补充军粮。见司马懿有防备,便下令准备三套同样的车马,每车用二十四个人赤脚披发推车,令姜维、魏延、马岱三人都装扮成自己,以迷惑敌军。
第二天,下着小雨,天色一陰一暗,魏军见孔明坐车而来,便一齐追赶。但四处都有孔明出现,推车的人模样骇人,魏兵以为是鬼神出现,吓得各自奔逃。三万蜀军却迅速将陇西的麦子割得一干二净。
司马懿见蜀兵在卤城打麦子,便引兵去偷袭。孔明料定魏军要来攻城,便在城外埋伏了军马,内外夹攻,魏军死伤很多。
这时运送粮草的李严来信告急,说魏、吴联合进攻蜀国。孔明担心东川安全,立即撤军。
张要领兵追赶,司马懿知他性情急躁,一再告诫他小心孔明的埋伏。
张一路急追到木门道中,忽然火光冲天,大石滚滚而下,断了张退路。两边山上万一弩一齐发,将张的兵马,全部射死了。
孔明回到汉中,才知是李严因未办好军粮怕孔明治罪,写假信告急,骗孔明回来。孔明要斩李严,费代他求情,孔明只好放了他,削去官职,降为平民。