建興八年,秋七月,大將軍曹真病癒,遂上表奏曰:“蜀兵數次犯我,若不剿除,長久之患也。今正秋爽,人馬安閒,糧草豐足,臣願與仲達同領大軍,殺入漢中,掃平奸黨,永寧西庭。”魏主覽表大喜,問侍中劉曄曰:“子丹上表伐蜀,卿以為何?”劉曄曰:“大將軍所言是也,今不剿除,永為禍患。”
次日,眾大臣俱至劉曄宅問曰:“聞天子與公,議伐蜀之事,公意下如何?”劉曄曰:“蓋無此事也。且,愚以為蜀有重山之險,非易圖之,若強徵伐,徒勞軍旅,於國無益。”眾臣辭去。楊暨入內告奏:“昨,劉曄勸陛下伐蜀,今對眾臣,又言不可伐,劉曄有欺君之嫌,不可不問。”曹睿即召劉曄問曰:“卿勸朕伐蜀,今與人言又曰不可,為何?”劉曄曰:“昨日,陛下與臣所議,乃國之大事,豈可輕洩?兵者詭道也,事未發,宜密之。”曹睿大悟,愈加敬重。
不數日,司馬懿巡南迴洛,曹睿問其伐蜀之事。司馬懿奏曰:“臣見孫權,無用兵之意,陛下正可趁機伐蜀。”曹睿大喜,即命曹真為大司馬、徵西大都督,司馬懿為大將軍、徵西副都督,劉曄為軍師,起兵四十萬伐蜀。三人拜辭魏帝,西至長安,取子午谷南下。
時,孔明已病癒,正於漢中操練人馬。忽報:“曹真、司馬懿統兵四十萬,以張合為先鋒,取子午谷,來寇漢中!”孔明乃令張嶷、王平曰:“你二人速引一千精兵,去守子午谷險要。”二人相視曰:“魏軍四十萬,我兵一千,如何拒之?丞相欲殺我二人,就此請斬。”孔明笑曰:“僅命引一千兵前去者,乃不願徒勞軍士也。亮觀天文,見畢星行踐太陰,此月內必有大雨。到時子午谷河水暴漲,山洪頻發,魏軍雖有四十萬,亦必狼狽而退,你二人定無危矣。若有失,亮之罪。”張嶷、王平大喜,引兵而去。孔明遂提大軍,至城固縣赤坂坡紮下營寨,傳令各軍,預備柴草,夠人馬一月之用。
曹真、司馬懿提大軍徑入子午谷,張合統兵五萬為先鋒。司馬懿謂曹真曰:“我夜觀天文,見畢星侵履太陰,此月必有大雨,若不能速出子午谷,大雨驟至,我軍危矣。”曹真即命大軍兼程而進。行不二日,大雨忽降。司馬懿曰:“不如速退。”曹真曰:“勞師遠征,未戰即退,於國何益?量此天雨,能奈我何!”遂驅三軍,冒雨而進。洪水頻發,泥石塞道,日進十餘里。
訊息傳入洛陽,魏帝設壇祭天,求晴不得。黃門侍郎王肅上疏曰:“前志有云:‘千里饋糧,士有飢色,樵蘇後爨,師不宿飽。’此謂平原行軍者也,況我深入險阻,鑿路而前。今,又遭老霖雨,山坂峻滑,兵滯而不能展,糧阻而難接續。曹真發已月餘,方行半谷,治道工大,兵士力乏,實乃行軍之大忌也。”楊阜、華歆亦上疏諫言。曹睿乃下詔退兵。
是日,司馬懿與曹真議曰:“今連雨三十餘日,河水暴漲,若不退兵,四十萬大軍,盡喪谷中矣。”曹真望天嘆曰:“天時不與,真奈何也?”忽皇命至。司馬懿乃伏軍斷後,大兵徐徐而退。
孔明在赤坂坡,算一月秋雨將盡,乃謂眾將曰:“我料魏軍已退。”言未畢,忽王平入帳報曰:“曹真退兵。”眾將紛紛請命,追擊魏軍。孔明曰:“不可。”眾將曰:“魏軍苦雨日久,今狼狽退走,正好追擊,一鼓作氣,直下長安!”孔明曰:“司馬懿通曉兵法,曹子丹熟知韜略,今其軍退,必有伏兵,我若追之,正中其計。不如出其不意,兵出斜谷,佔據棋山。”眾將問曰:“丞相每出斜谷,必據棋山,為何?”孔明曰:“此山南依秦嶺,北臨渭水,左有斜谷,右有箕谷,左出右入,正可用兵。佔據棋山,居高臨下,盡得地利,周邊情形,一覽無餘,乃用武之佳地也。”孔明遂令魏延、張嶷、陳式、杜瓊兵出箕谷,命馬岱、王平、張翼、馬忠兵出斜谷,兩路人馬會於棋山。孔明自提大軍,隨後進發。
曹真、司馬懿退兵,探馬回報:“蜀兵未追。”又行旬日,埋伏人馬皆回,言未見蜀兵。曹真曰:“秋雨連綿,棧道盡毀,蜀人安知我軍退走?”司馬懿曰:“蜀兵不追,必出斜谷。”曹真曰:“何以見得?”司馬懿曰:“諸葛亮料我有伏兵斷後,故縱我遠去,他卻出我不意,兵出斜谷。”曹真大笑曰:“此乃仲達自我所思也,我料蜀兵,必不出斜谷。”司馬懿曰:“以我所料,諸葛亮必分兵自兩谷而出,我與你各守一谷,十日為期,若蜀兵不出,我面塗紅粉,身著女裝,至你營中請罪。”曹真曰:“若蜀兵果至,我將天子所賜玉帶一條,御馬一匹相送。”於是,分兵兩路。曹真引一軍屯斜谷,司馬懿引一軍屯箕谷。
安營已畢,司馬懿令一支