第一次北伐已失敗告終,此時東邊的吳國在精心準備一場伏擊戰。當年秋天魏國大司馬曹休率領十萬軍隊被東吳鄱陽(郡治在今江西波陽東)太守周舫以詐降的辦法誘騙到石亭(今安徽桐城西南),遭吳國大都督陸遜三路伏擊,魏軍萬餘人被殲,吳軍繳獲的各種軍用物資也堆積如山。曹休逃走回國後因此事羞憤難堪,得了背癰(背部化膿感染)而亡,關中的魏軍東調防吳,這就又給了蜀漢北伐的良機。冬十二月,諸葛亮率數萬軍隊出散關(今陝西寶雞南),圍攻魏重鎮陳倉(今陝西寶雞東,是漢中通往關中的要道)。
根據《曹真傳》的記載,在祁山擊退蜀軍後曹真料到蜀軍下次進攻必選陳倉,於是命將軍郝昭、王生率領千餘人提前做好準備,所以這一次魏軍是早有提防。這場戰鬥也進行的相當激烈,《明帝紀》中詳細記載了這場戰鬥的過程:諸葛亮使郝昭同鄉勒詳勸降不成後架起雲梯沖車,郝昭以火箭射雲梯燒死蜀軍、以繩索連接石磨砸向沖車將其破壞;諸葛亮以百尺井闌(一種登高用的攻城車)向城內射擊,填平護城河攀城,郝昭就在城中再築重牆讓蜀軍無法攀爬;諸葛亮又派軍士挖地道,郝昭則在城內將地道橫截挖斷,雙方相持了二十餘日直到轉年正月。曹真派魏將軍費曜前去救援,魏明帝曹睿也遣張郃率領三萬人增援。曹睿親自為張郃餞行,問及張郃是不是等魏軍援兵趕到時陳倉已經失守,張郃答道:「不用等我趕到諸葛亮就已經退兵了,估計蜀漢軍隊的糧食供應不會超過十天。」果然如張郃所說,諸葛亮的第二次北伐在張郃趕來之前就因糧盡撤兵。不過這次北伐也並非沒有收穫,在撤退時魏將軍王雙率領騎兵前來追擊,被蜀漢軍隊擊殺。
公元229年春,諸葛亮進行了第三次北伐,這一次出兵沒有再深入魏國境內,而是把目光放在了緊鄰漢中的魏陰平(郡治今甘肅文縣西北)、武都(郡治在甘肅成縣西北)二郡,命將軍陳式前去攻取。這兩個魏國邊郡緊鄰漢中,當年劉備曾派偏將吳蘭、雷銅攻取,但未能拿下。此時魏國大將雍州刺史(治所在長安,雍州為魏國從涼州分置)郭淮打算反擊陳式,諸葛亮率主力趕到建威(今甘肅西和縣北),郭淮撤退,兩郡最終被陳式順利攻下。後主劉禪鑒於諸葛亮在幾個月內就率蜀漢軍隊斬將拔地,而街亭之失罪在馬謖,下詔恢復了諸葛亮丞相官職。當年拿下兩郡後,諸葛丞相沒有再對魏國用兵,而是在漢中進行休整,並建造了漢城(今陝西勉縣西南)和樂城(今陝西城固東,三條谷道之一的駱谷即在城固西北)用以鞏固防務。這一年,老將軍趙雲病故。
一年多的時間裡,蜀軍三寇魏境,還在漢中造城,對魏國的威脅已經越來越大。大將軍曹真認為蜀軍不斷犯邊,應當立即出兵征討,只要分兵數路同時進軍,就可以取得大勝。曹真將伐蜀建議上奏魏明帝曹睿,曹睿批准。《曹真傳》記載:公元230年八月,曹真由長安出發,走魏延建議奇襲的那條子午道,司馬懿逆漢水西進,計劃於漢中南鄭(漢中郡治,今陝西漢中市)會師,其餘的魏軍有的出斜谷,有的出武威(郡治今甘肅武威,同時也是涼州州治),多路同時進攻。蜀漢方面,諸葛丞相聽聞魏軍大舉來犯,一方面在漢中集結軍隊,一方面讓李嚴率二萬士兵從江州(今重慶市)增援漢中,因為李嚴同為托孤大臣,作為補償諸葛丞相向劉禪舉薦了李嚴的兒子李豐擔任江州都督督軍,主持李嚴走後的政務。
當年劉備奪取漢中時殺掉夏侯淵,夏侯淵之子夏侯霸一直打算為父報仇。此次他擔任曹真先鋒,率先攻到漢中興勢(今陝西洋縣北)。夏侯霸的軍營駐紮在山谷中,蜀地百姓看到了,得知領兵的是夏侯霸,於是引導蜀軍進攻。夏侯霸身先士卒親自在鹿角間搏殺,幸好魏軍來援,蜀軍撤退。不過,除了少量的先鋒部隊外,魏軍主力沒有一路到達。《曹真傳》中記載:恰逢一連下了三十多天大雨,有的棧道被水沖斷,魏明帝曹睿下詔令曹真等退軍。此時蜀漢軍隊開始發動反擊,諸葛丞相遣魏延、吳懿兩人率軍進入魏南安郡,深入了羌人的聚集地,在陽溪(今甘肅渭源北)將郭淮、費曜打得大敗(《魏延傳》載:延大破淮等)。