魏明帝太和二年(戊申,公元228年),諸葛亮將要攻打魏,稅下人商量這次軍事,行動。丞相司馬魏延說︰「听說夏侯是魏帝的女婿,此人膽卻而沒有智謀。現請給我五千人的精銳部隊,帶著五千人口糧,直接從褒中出發,沿著秦嶺向東,到子午道後折向北方,用不了十天功夫,可以抵達長安。夏侯听到我突然來到,一定棄城逃走。長安城中就只有御史、京兆太守了。橫門糧倉的存糧以及百姓逃散剩下的糧食,足以供給軍糧。等到魏國在東方集結起軍隊,還要二十多天時間,而您從斜谷出來接應,也完全可以到達。這樣,就可以一舉而平定咸陽以西的地區了。」諸葛亮認為這是危而不妥的計策,不如安全地從平坦的路上出去,可以穩穩當當地取得隴右地區,有百分之百的把握取勝而不會有失,所以不用魏延之計。(子午谷之謀有利有弊,以諸葛謹慎的性格是斷不會采用的)
諸葛亮揚言從斜谷取城,命令鎮東將軍趙雲、揚武將軍鄧芝充當疑兵,據守箕谷;明帝派遣曹真都督關右地區各軍駐扎在城。諸葛亮親自統率大軍進攻祁山,軍陣整齊,號令嚴明。起初,魏認為蜀漢昭烈亮劉備已經去世,幾年來沒有什麼動靜,因此放松了防備;而突然听到諸葛亮出兵,朝廷和民眾都很懼怕。于是,天水、南安、安定等郡都背叛魏而響應諸葛亮,關中如雷轟頂,受到震動,朝廷大臣不知不什麼對策,明帝說︰「諸葛亮本來依據山險固守,現在親自前來,正合乎兵書所說招敵前來的策略,一定能夠打敗諸葛亮。」于是統領步兵和騎兵五萬大軍,命右將軍張監管軍務,向西抵御諸葛亮。丁未(疑誤),明帝到達長安。
起初,越太守馬謖,才氣和抱負超過常人,喜好議論軍事謀略,諸葛亮對他深為器重;昭烈帝劉備臨終之時對諸葛亮說︰「馬謖言語浮夸,超過實際才能,不可委任大事,您要對他多加考察。」諸葛亮還認為不是這樣,讓馬謖做參軍,時常接見一起談論,從白天直到黑夜。等到出兵祁山,諸葛亮不用舊將魏延、吳懿等為先鋒,而是讓馬謖統領各軍在前,同張頜在街亭交戰。
馬謖違背諸葛亮的指揮調度,軍事行動混亂無章,放棄水源上山駐扎,不在山下據守城邑。張斷絕馬謖取水的道路,發動進攻並大敗馬謖,蜀軍潰散。諸葛亮前進沒有據點,就攻取西縣一千多人家回到漢中。把馬謖關進監獄,殺了他。諸葛亮親自吊喪,為他痛哭流涕,安撫他的子女,如同平素一樣恩待他們。蔣琬對諸葛亮說︰「古時候晉國同楚國交戰楚國殺了領兵的得臣,晉文公喜形于色。現在天下沒有平定,而殺了智謀之士,難道不惋惜嗎?」諸葛亮流著眼淚說︰「孫武能夠制敵而取勝于天下的原因,是用法嚴明;所以晉悼公的弟弟揚干犯法,魏絳就殺了為他駕車的人。現在天下分裂,交戰剛剛開始,如果又廢棄軍法,怎麼能夠討伐敵人呢?」
馬謖沒有失敗時,裨將軍巴西人王平一再規勸馬謖,馬謖不采納;等到失敗,部眾四散,只有王平率領的一千人擂響戰鼓,把守營地,張懷疑有伏兵不敢往前*近,于是王平緩緩地收擾各部散余的士兵,率領人馬返回。諸葛亮既殺了馬謖和將軍李盛,還奪了將軍黃襲等的兵權,王平的名聲地位就特別提高和顯示出來,又提拔他為參軍,統伶部兵馬和營屯之事,官位晉升到討寇將軍,封為亭侯。諸葛亮上書請求自己貶降三級,漢後主任命諸葛亮為右將軍,兼理丞相的職務。
這時趙雲、鄧芝的部隊也在箕谷戰敗,趙雲收斂部隊堅守,所以損失不大,但也因此被貶為鎮軍將軍。諸葛亮問鄧芝道︰「街亭失利,大軍敗退,兵將不再可收拾,箕谷戰敗部隊撤退,兵將依然齊整如初,是什麼原因呢?」鄧芝說︰「趙雲親自在部隊後面拒敵,軍需物資,一點都沒有拋棄,兵將沒有什麼緣由可以散亂。」趙雲有軍資和剩余的絹帛,諸葛亮讓用來分給將士,趙雲說︰「軍事上沒有勝利,為什麼要有賞賜,這些物資請全部存入赤岸庫,等到十月用作冬季犒勞品。」諸葛亮很贊同這個意見。(趙雲並非長勝將軍,這是他在正史中為數不多的出場機會。)
有人勸說諸葛亮再次發兵,諸葛亮說︰「大軍在祁山、箕谷的時候,都多于敵軍,但沒有打敗敵人,反而被敵人打敗,問題不在于兵少,而在于將領。現在我打算減少兵將,顯明責罰,反思過失,將來另想變通的辦法。如果不能這樣,即使兵多也沒有什麼用處!從今以後,凡是一心為國家分憂效忠的人,只要多多批評我的過錯,那麼大事就可以安定,敵人就可以打垮,大功就可蹺足而待了。」于是考察有功將士,連微小的功勞也不遺漏,對壯烈之士,一一加以甄別,引過自責,把自己的過失在境內公開宣布,練兵講武,準備將來進取。將士精簡干練,民眾忘記既往的兵敗了。(這邊正史上壓根沒空城計一說,司馬懿也不會分身在這出現)
諸葛亮出兵祁山的時候,天水參軍姜維向諸葛亮歸降。諸葛女乃贊賞姜維的膽識,任用他做倉曹掾,掌管軍事。
曹真討伐安定等三個郡,都已平定。曹真認為諸葛亮以祁山之敗為戒,以後一定從陳倉兵,于是讓將軍郝昭等駐守陳倉,修建城池。
夏季,四月,丁酉(初八),魏明帝返回洛陽。