诸葛亮乘陆逊在石亭打败曹休之机,出散关,包围陈仓(今陕西宝鸡西南),攻打二十多天未破,魏的援军赶到,他不得已又退回汉中。
建兴七年(229),亮进攻武都(今甘肃成县)、阴平(今甘肃文县西北),打败魏援军,占了这两郡,留兵据守,自己率部回师。次年,魏军进攻汉中,诸葛亮加强防守,又增调援军,再由于连续大雨,子午谷、斜谷等道路不通,魏军撤退。
建兴九年(231年),蜀军包围祁山,魏军统帅司马懿迎击,诸葛亮准备决战。司马懿知蜀军远来,军粮不多,凭险坚守,拒不出战。诸葛亮想用退兵的办法引诱敌人,但司马懿追赶很谨慎,蜀军一停,他就扎营拒守。此时李严假传刘禅要求退兵的圣旨,加上蜀军粮草将尽,诸葛亮只得班师,在归途中以伏兵杀了魏国名将张郃。
十二年春(234年),诸葛亮率十万大军出斜谷口,到达郿县,在渭水南岸五丈原扎营。司马懿也筑营阻拦,不与蜀军作战,料知蜀军远来,粮草运输困难,想把蜀军拖垮。诸葛亮也有准备,在渭水分兵屯田,作长期战争的打算。诸葛亮在这次出兵前曾与孙权约定同时攻魏,五月吴军十万攻魏,不胜,撤回江东,所以蜀军只得与魏军单方面周旋。八月间诸葛亮积劳成疾,病情日益严重,不久就与世长辞。死后,姜维等遵照他的遗嘱,秘不发丧,整军退入斜谷。