司馬懿不去追馬謖,卻領兵到祁山攻打諸葛亮的大營。諸葛亮接到王平的報告,已知馬謖誤事,急忙退回西城,並傳令天水各郡的守兵全部趕到漢中,又讓趙雲、鄧芝收兵退回陽平關。司馬懿領兵十多萬,蜂擁而至,城中留下的士兵不多,想退往陽平關,已經來不及了。蜀軍將士大驚失色,諸葛亮卻談笑風生,隻說不用擔心。待司馬懿快到的時候,諸葛亮傳令偃旗息鼓,把四個城門都打開,每個城門都令士兵灑水、掃地,自己則帶了兩名小童,在城樓上焚香彈琴。司馬懿一馬當先,前來攻打西城,遙見諸葛亮如此布置,心中狐疑,徘徊了很久,最後領兵退去。部將問起原因,司馬懿說:“我聽說諸葛亮不進子午穀,為人極其謹慎。如今城門大開,他豈會這麼疏忽,明明是引誘我入城,所以我們要趕快退下,不要被他算計。”說完立即離去。
諸葛亮見司馬懿退去,不禁鼓掌大笑。有人問諸葛亮:“司馬懿擅長領兵打仗,為何來了又走呢?”諸葛亮笑道:“司馬懿知道我謹慎,不肯輕易冒險。如今他見我這樣,必定懷疑我有伏兵,所以退去。我料他不會走大路,一定沿著北山逃去。今天我們還要送他一程,截下一些軍用物資,也不辜負他來此一趟。”說完,就派吳懿等人趕到北山,隻準在山穀中呐喊,不準廝殺,然後把奪取的軍用物資運回陽平關。吳懿奉命前去,諸葛亮率兵出了西城,趕回陽平關。司馬懿果然從北山逃跑,突然聽到後麵喊聲大起,以為是蜀兵前來追趕,慌忙將軍用物資拋棄,拚命逃跑。吳懿等依從軍令,沒有追擊,隻將物資運回陽平關。
諸葛亮已經退到陽平關內,魏延、馬謖等人出來迎接。馬謖下跪請罪,諸葛亮生氣地說:“你驕傲大意,導致全軍覆滅。如果不以軍法處治你,怎麼能令眾人信服?”馬謖哭著說:“我與丞相情同父子,今天自知誤事,罪該萬死。”諸葛亮也流下了眼淚:“你如果聽從王平的建議,又怎會戰敗呢?事已至此,我也不能顧及私情了,你的家人我自會撫恤,你的兒子就是我的兒子,你不必掛念。”說完,就令左右將馬謖推出去斬首示眾。然後把他埋葬,並親自致哀。此後每月都派人給馬謖家送去錢財和食物。諸葛亮歎息說:“先帝曾說馬謖言過其實,不能重用,如今果然應驗。馬謖有罪,我也難辭其咎。”於是準備上疏彈劾自己。碰巧趙雲、鄧芝從箕穀退回,趙雲說自己無功,也應受到懲罰。諸葛亮向鄧芝詢問情況,鄧芝說曹真率兵追擊,幸虧趙雲親自斷後,全軍才得以安全返回。諸葛亮感歎道:“街亭的士兵戰敗退回,首尾不能相顧,以致損失慘重;箕穀軍退回,將士都沒有損失。可見用兵在人,而不在人數多少啊。”趙雲還帶回一些軍用物資,諸葛亮讓他這把些東西賞賜給將士。趙雲說:“將士沒有立功,為何要受到賞賜呢?應暫時把財物貯藏庫中。”諸葛亮點頭說好,隨後上疏請求將自己貶謫,趙雲也上疏請求處懲自己。
後主看到奏章後,詢問蔣琬、費禕。蔣琬等說應聽從諸葛亮的話,暫時將他們降職。後主於是把諸葛亮貶為右將軍,行丞相事,把趙雲降為鎮軍將軍,讓蔣琬帶著詔書到營中。諸葛亮接到詔書後,留蔣琬一同飲酒。蔣琬對諸葛亮說:“如今天下大亂,你卻殺死馬謖,豈不可惜?”諸葛亮哭著說:“孫武之所以能出奇製勝,全靠軍法嚴明。如今四海分裂,士兵正在交戰,如果不按律處治,怎麼能治理好軍隊呢?”蔣琬勸諸葛亮回成都,諸葛亮搖頭說:“奉詔討伐逆賊,怎能半途而廢?”蔣琬又說道:“想要再次伐魏,必須增添兵馬。”諸葛亮悵然道:“街亭一戰,並非因為兵少才敗,實在是因為我誤用馬謖。如今應當慎重選用將領,以免重蹈覆轍,希望你在朝中妥善處理政事,這樣才能征服天下。”蔣琬點頭稱是。不久,蔣琬告辭離去。
吳國鄱陽太守周魴,用詐降計引誘魏國攻打皖城。魏國揚州牧守曹休誤信周魴,立即發兵,曹叡又讓司馬懿到江陵,建威將軍賈逵到東關,三路兵馬同時出發。吳國任用陸遜為都督,朱桓、全琮為副將,領兵攻打曹休。曹休自恃人多,領兵深入。吳兵在石亭將曹休打敗,曹休逃回夾石。吳兵在後麵緊追不舍,曹休險些不能脫身,多虧賈逵趕來支援,才幸免於難,但所有的物資全部丟失。司馬懿半路折回,曹休又慚愧又氣憤,不久得病去世。魏將滿寵接替曹休的職務,此人老成謹慎,駕馭有方,沒過多久便練成了一支強軍。諸葛亮聽說吳國打敗魏國,又想乘機北伐。正要調動兵馬,不料鎮軍將軍趙雲因病去世。諸葛亮大為悲痛,後主劉禪也很悲傷,追諡趙雲為順平侯,令趙雲的長子趙統襲封。群臣都說剛剛失去一員大將,不宜出兵。諸葛亮卻堅持北伐,不肯聽從。