建兴六年(228年)春,诸葛亮事先扬声走斜谷道取郿,让赵云、邓芝设疑兵吸引曹真重兵,自己率大军攻祁山。陇右的南安、天水和安定三郡反魏附蜀,关中震响。魏明帝西镇长安,命张郃率领步骑五万人前往,大破马谡于街亭。而同时赵云寡不敌众,失利于箕谷。诸葛亮乃拔西县千余家返回汉中。第一次北伐失败。
同年冬,诸葛亮趁魏兵东下,关中虚弱,趁机北伐,出兵散关(今陕西省宝鸡市西南)围陈仓(今陕西省宝鸡市东),为魏将郝昭所拒,诸葛亮劝降不成,而又粮草不继,不得已退还汉中。魏将王双来追,被斩。
建兴七年(229年)春,诸葛亮遣陈式攻武都(今甘肃省成县周边)、阴平(今甘肃省文县周边)二郡。雍州刺史郭淮引兵救之,亮自出至建威(今甘肃省西和县西),郭淮退,遂得二郡。
建兴八年(230年)秋,魏军三路进攻汉中,司马懿走西城(今陕西省安康市西北),张郃走子午谷,曹真走斜谷。诸葛亮驻军于城固(今陕西省城固县东)、赤坂(今陕西省洋县东二十里)。时大雨三十余天,魏军撤退。同年,诸葛亮使魏延、吴懿西入羌中,大破魏后将军费曜(瑶)、雍州刺史郭淮于阳溪(南安郡内,当在今甘肃省武山西南一带)。
建兴九年(231年)二月,诸葛亮率大军攻祁山,始以木牛运。时曹真病重,司马懿都督关中诸将出拒。诸葛亮割麦于上邽(今甘肃省天水县)。司马懿追亮至卤城(今甘肃省天水市与甘谷之间),掘营自守,有“畏蜀如畏虎”之讥。
据《汉晋春秋》记载,同年五月,诸葛亮使魏延、高翔、吴班赴拒,大破司马懿,汉军获甲首三千级,玄铠五千领,角弩三千一百张,于是司马懿退还保营。该史料后被《资治通鉴》引用。《晋书》则记魏军卸甲轻装,日夜兼程,在汉阳与诸葛亮相遇,司马懿派将军牛金率轻骑做饵,诸葛亮退兵至祁山,屯兵卤城,据南北二山,堵水筑围墙。魏军攻破,大破蜀军,俘获斩首数万。 而陈寿所著《三国志》里,两种说法均无记载。
六月,李严因运粮不济呼诸葛亮还师。张郃追亮退兵至木门,中箭身亡——此为二出祁山。
建兴十二年(234年)二月,诸葛亮率大军出斜谷道,据武功五丈原(今陕西省岐山南),屯田于渭滨,与司马懿对於渭南,并约吴国共同发兵。期间诸葛亮既屡屡遣使者下战书,又致巾帼妇人之饰,以激怒司马懿,但司马懿忍辱据守不出,并以“千里请战”的妙计平息将怒。
司马懿曾向蜀汉使者询问诸葛亮的睡眠、饮食和办事多少,不打听军事情况,使者答道:“诸葛公早起晚睡,凡是二十杖以上的责罚,都亲自披阅;所吃的饭食不到几升。”司马懿告诉人说:“诸葛孔明进食少而事务烦,他还能活多久呢!”
诸葛亮乃分兵屯田,在魏国境内与魏国百姓共同种粮自给自足,打算长期驻扎下去,但诸葛亮却因过于操劳而病重。