出兵散关(今陕西省宝鸡市西南)围陈仓(今陕西省宝鸡市东),
为魏将郝昭所拒,诸葛亮劝降不成,而又粮草不继,不得已退还汉中。
魏将王双来追,被斩。
建兴七年(229年)春,诸葛亮遣陈式攻武都(今甘肃省成县周边)、
阴平(今甘肃省文县周边)二郡。雍州刺史郭淮引兵救之,
亮自出至建威(今甘肃省西和县西),郭淮退,遂得二郡。
建兴八年(230年)秋,魏军三路进攻汉中,
司马懿走西城(今陕西省安康市西北),张合走子午谷,曹真走斜谷。
诸葛亮驻军于城固(今陕西省城固县东)、赤坂(今陕西省洋县东二十里)。
时大雨三十余天,魏军撤退。同年,诸葛亮使魏延、吴懿西入羌中,
大破魏后将军费曜(瑶)、雍州刺史郭淮于阳溪(南安郡内,
当在今甘肃省武山西南一带)。
建兴九年(231年)二月,诸葛亮率大军攻祁山,始以木牛运。
时曹真病重,司马懿都督关中诸将出拒。
诸葛亮割麦于上邽(今甘肃省天水县)。
司马懿追亮至卤城(今甘肃省天水市与甘谷之间),
掘营自守,有“畏蜀如畏虎”之讥。
同年五月,诸葛亮使魏延、高翔、吴班赴拒,大破司马懿,
汉军获甲首三千级,玄铠五千领,角弩三千一百张,于是司马懿退还保营。
《晋书》则记魏军卸甲轻装,日夜兼程,在汉阳与诸葛亮相遇,
司马懿派将军牛金率轻骑做饵,诸葛亮退兵至祁山,屯兵卤城,
据南北二山,堵水筑围墙。魏军攻破,大破蜀军,俘获斩首数万。
而陈寿所着《三国志》里,两种说法均无记载。
六月,李严因运粮不济呼诸葛亮还师。
张合追亮退兵至木门,中箭身亡——此为二出祁山。
建兴十年(232年),诸葛亮在黄沙休兵劝农,制作木牛流马等,
并且练兵讲武,准备再次北伐。
建兴十一年(233年)冬,诸葛亮派遣诸军运米,集结大军于斜谷口,治斜谷邸阁。
建兴十二年(234年)二月,诸葛亮经过三年劝农讲武的准备,
率大军出斜谷道,据武功五丈原(今陕西省岐山南),屯田于渭滨,
同时派使臣到东吴,希望孙权能同时攻魏。四月,蜀军到达郿县,
在渭水南岸的五丈原下扎营寨。司马懿则率领魏军背水筑营,
想再次以持久战消耗蜀军粮食,令蜀军自行撤退。
魏将郭淮认为蜀军必会争夺北原,司马懿认同,便派郭淮先前往防备。
果然,蜀军到来,但被郭淮击退。
诸葛亮考虑到前几次北伐都因为运粮不继,导致功败垂成,
于是开始在渭、滨的居民之间屯田生产粮食,百姓亦相安无事,一切如常。
而孙权也响应蜀汉,亲率十万大军北上攻魏,但被魏明帝曹叡亲自率军打败。
诸葛亮派虎步监孟琰驻武功水北,适逢水涨,阻断了诸葛亮和孟琰的联系。
司马懿趁机出兵进攻孟琰。结果诸葛亮一方面派工兵架桥,