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