眾將聽說孔明不追魏兵,都進帳來報告說:“魏兵受雨水之苦,不能駐紮,因此才回去,正好乘勢追擊。丞相為什麼不追?”孔明說:“司馬懿善於用兵,現在軍隊撤退必有埋伏。我們如果追擊,正中他們的計策。不如放他們遠去,我們卻分兵直接出斜谷而奪取祁山,使魏兵不提防。”眾將說:“取長安之地,還有別的路,丞相只取祁山為什麼呢?”孔明說:“祁山是長安的首要之地。隴西各郡的兵馬來,都必經此地,更何況它前臨渭濱,後靠斜谷,可以出可以入,十分便利,是埋伏兵力的好地方。我想先取此地,得到有利的地勢。”眾將都拜服。孔明命令魏延、張嶷、杜瓊、陳式出箕谷,馬岱、王平、張翼、馬忠出斜谷,都在祁山會合。調撥已定,孔明親自率領大軍,命令關興、廖化為先鋒,隨後進發。
曹真、司馬懿二人在後面監督人馬,命令一軍進入陳倉古道探視,回報說蜀兵不來。又走了十天,後面埋伏的眾將都回來了,說蜀兵全無音信。曹真說:“連綿秋雨,棧道斷絕,蜀人怎麼會知道我們退軍呢?”司馬懿說:“蜀兵隨後就會出來。”曹真說:“你怎麼知道?”司馬懿說:“連日來天氣晴明,蜀兵不追趕,料想我們有埋伏,所以放我們遠去,等我們軍隊過盡,他們卻奪祁山了。”曹真不信。司馬懿說:“子丹如何不信?我料孔明一定從兩谷而來。我和子丹各守一谷口,十日為期。如果沒有蜀兵來,我面塗紅粉,身穿女衣,來營中認罪。”曹真說:“如果有蜀兵來,我願將天子所賜的玉帶一條、御馬一匹送給你。”於是分兵兩路:曹真引兵在祁山之西、斜谷口駐紮;司馬懿引軍在祁山之東、箕谷口駐紮。各自紮下營寨後,司馬懿先引一軍埋伏在山谷中,其餘的軍馬,在各要路安營。司馬懿更換衣裝,雜在眾軍之內,到處觀察各營。他忽然到一營,有一偏將仰天而抱怨說:“大雨淋了許多時候,不肯回去,現在又在這裡停住,硬要賭賽,卻苦了官軍!”司馬懿聽到這話,回到營中升帳,聚眾將都到帳下,把那將找出來。司馬懿斥責他說:“朝廷養軍千日,用在一時。你怎麼敢出怨言,以動搖軍心!”那人不招。司馬懿叫出他的同伴來對證,那將不能抵賴。司馬懿說:“我並非賭賽,想勝蜀兵,讓你們各人有功回朝。你卻妄出怨言,自取罪責!”喝令武士推出斬首。不一會兒,獻上首級到帳下。眾將都感到悚然。司馬懿說:“你們眾將都要盡心防守蜀兵。聽我中軍炮響,四面都進兵。”眾將接受命令而退下。
魏延、張嶷、陳式、杜瓊四將,帶領二萬兵,從箕谷進軍。正行之間,忽然報告參謀鄧芝到來。四將問他原因,鄧芝說:“丞相有令:如果出箕谷,要提防魏兵埋伏,不可輕進。”陳式說:“丞相用兵為什麼這麼多疑呢?我料想魏兵連遭大雨,衣甲都毀了,必然會急忙回去,怎麼又有埋伏呢?現在我們加倍速度進軍,可獲得大勝,為什麼又叫休進?”鄧芝說:“丞相計策沒有不中的,謀劃沒有不成的,你怎麼敢違抗命令?”陳式笑著說:“丞相如果果然多謀,就不會有失街亭的事了!”魏延想起孔明以前不聽他的計策,也笑著說:“丞相如果聽我的話,直接出子午谷,這時不要說長安,連洛陽都得到了!現在他執意要出祁山,有什麼好處呢?既然叫我們進兵,現在又叫休進,為什麼號令這樣不明呢?”陳式說:“我自有五千兵,直接出箕谷,先到祁山下寨,看丞相羞也不羞!”鄧芝再三勸阻,陳式就是不聽,直接帶領五千兵出箕谷去了。鄧芝只得飛馬報告孔明。
陳式帶著軍隊走了不到數里路,突然聽到一聲炮響,四面八方的伏兵都衝了出來。陳式急忙想撤退,但魏兵已經堵滿了谷口,圍得像鐵桶一樣。陳式左衝右突,無法逃脫。忽然聽到喊聲大震,一彪軍殺了進來,原來是魏延,他救了陳式,回到谷中。原本五千的兵力,現在只剩下四五百人,還都帶著傷。背後的魏兵還