卻說魏大將軍曹真,收複南安、天水、安定三郡,自恃有功,尚想出師報怨,乃上書曹叡,請由斜穀攻蜀,數道並進,可以大克。叡依了真言,便命大將軍司馬懿溯漢西上,與真會攻漢中。司空陳群上言,斜穀險阻,轉運為難,不宜遽從真議。叡轉詢曹真,真又表從子午穀進兵,群又言未便,真卻不待複詔,當即啟行。蜀丞相諸葛亮,接得警報,即引兵出漢中,分屯成固、赤阪,嚴營待敵。一麵召李嚴率兵二萬,至漢中會師,表嚴子豐為江州都督,繼嚴後任。會值秋雨兼旬,山穀水溢,曹真自長安出發,隨在阻滯,就途月餘,尚不能度子午穀。當由魏太尉華歆、少府楊阜、散騎常侍王肅等迭請班師,魏主叡乃召還曹真。司馬懿本來乖刁,當然借天雨為名,按兵不進。亮卻遣司馬魏延,西入羌中,招撫羌眾,與魏雍州刺史郭淮大戰陽溪,斬獲甚眾,奏凱而還。時長史張裔病歿,亮遷蔣琬為長史。琬字公琰,籍隸湘鄉,嚐隨先主入蜀,受命為廣都長,沉湎不治;先主意欲加誅,獨亮器重琬才,代為請免。及後主嗣立,亮遂舉琬為參軍,進任長史。琬嚐籌足餉糈,供給軍用,故亮每出師,饋運無闕。亮每言公琰托誌忠雅,可屬大事。
到了建興九年仲春,亮複興師伐魏,進攻祁山。魏曹真已升任大司馬,抱病甚重,不能督軍,乃調司馬懿西屯長安;未幾真即去世,由子曹爽襲爵。懿得握軍事全權,即使部將費曜、戴陵,率精兵四千保守上邽,自偕將軍張郃等往救祁山。張郃請分守雍郿,懿謂兵分勢散,適為敵擒,因悉眾西行。亮聞懿親來援應,偏不去迎戰,但留王平攻祁山,自率魏延、薑維等,從間道往攻上邽。守將費曜、戴陵倉皇出戰,哪裏是蜀兵對手?四千人幾被殺盡,還虧雍州刺史郭淮領兵援應,才得救回。二將閉城靜守,天氣清和,隴上麥熟,亮令軍士四散割麥,作為兵糧。
郭淮等不敢出爭,隻遣人飛報司馬懿,促令還援,懿急忙回軍。行抵上邽城東,適值蜀將魏延、薑維等分路殺來,當即下令軍中,結陣自固,隻許放箭,不許出戰。魏延、薑維左右夾攻,都被魏兵射退,不得已收軍回營。懿卻斂兵依險,堅壁拒蜀,蜀將一再挑戰,隻是不出。亮引軍還抵鹵城,懿反從後追逼,亦至鹵城東偏下寨。亮使魏延、高翔、吳班等將分頭埋伏,自往懿營搦戰,懿仍然不出;蜀兵在懿營外百般辱罵,懿置若罔聞。惱動了大將張郃,入帳語懿道:“蜀兵遠道來攻,請戰不得,知我利在不戰,必將變計困我;為今日計,不如與彼一決,如得勝仗,彼自退去,祁山亦可解圍了。”懿搖首道:“諸葛亮軍孤食少,便要退兵,我兵將來追擊,自可得勝,何必定要急鬥哩?”郃又說道:“正惟敵軍將退,越好追擊,且眾誌皆奮,何患不勝?”懿終是不從,反且依山掘濠,為久屯計。忽有二將趨入道:“蜀兵又來挑戰了!”懿接口道:“由他挑戰,我總固壘不動,看他有何妙法?”二將齊聲道:“人言公畏蜀如虎,豈不可恥?況我軍比蜀較多,難道竟不能一戰麼?”懿被他一激,也有些忍耐不住,乃語二將道:“既如此說,可傳語各營,指日決戰。”二將得令趨出,便向各營通報。這二將叫作賈栩、魏平,年少氣盛,既已分頭傳令,便即摩拳擦掌,專等廝殺。
過了兩日,懿召諸將入議道:“欲擊蜀兵,必須兩道並進,一路攻鹵城,一路救祁山,使他不得相顧,方可奏功。”張郃出應道:“郃願往祁山。”懿乃撥兵萬人,令郃引去,自率大軍出戰。亮聞懿營中有鼓角聲,料他發兵前來,便授計與魏延、高翔、吳班三將,使他分頭行事,自率大隊出城,就城外布成陣勢,從容待著。約閱片時,便見懿兵過來,亮卻令前軍用連臂弓,射住懿兵。連臂弓由亮特製,一弓能連射十箭,懿兵雖然銳悍,究竟禁不住許多箭鏃,一再衝激,都被射回。待至銳氣少衰,忽蜀陣內一聲鼓號,萬軍潮湧,猛撲過來,懿忙督眾截住;甫經交鋒,刺斜裏殺到一支人馬,乃是蜀將高翔的旗號,當即分兵對敵,抵死不退。誰知後麵喊聲大震,蜀將吳班又複殺到,懿始大驚,麾兵退回。蜀兵三路追擊,懿且戰且行,才經半途,驀見一彪軍橫截路中,為首一員大將,拍馬舞刀,大呼:“魏延在此。”嚇得懿魂馳魄散,幾乎墜馬,幸虧驍將賈栩、魏平等保住懿身,奮力奪路,才得走脫。這番交戰,蜀兵大捷,斬獲甲首三千級,衣鎧五千領,戰具不可勝計。懿得脫歸營,埋怨部將好戰,致有此敗。嗣是決計堅守,不敢再出。張郃聞懿兵敗,卻也即退還,兩下又相持旬月。
魏將郭淮調集雍、涼勁卒,擬從間道往襲劍閣,偏被蜀營探卒偵知,飛報大營,諸葛亮便派兵守險,使薑維、馬岱等帶領前去。長史楊儀報稱現存八萬人,四萬人應該更替,現因來兵未到,新舊難繼,隻得暫從權變,留屯一月,方可遣歸。亮微笑道:“我自統兵以來,未曾失信。今既到了更替的時候,理應如約遣還,且應歸軍士,想已束裝待返,家中父母妻子並皆懸望。就使大敵當前,我卻不能臨危失信,乃令他如期歸去便了!”儀出傳亮命,軍中偏不願速行,共稱丞相大恩死且難報,願留營再戰,誓掃魏兵。正持論間,忽由李平差到,參軍狐忠、督軍成藩呈上平書,請亮即日還師。亮不免驚疑,但想李平是老成宿望,當必另有所見,且平方督主糧運,糧若不繼,亦難行軍,因決意退歸。先遣狐忠、成藩還報,一麵召集將士,示以歸意,且謂魏兵追來,須努力退敵。將士等都想再戰,聽到班師命令,尚覺失望,欲要他力敵追兵,巴不得殺敵多人,借報恩遇;所以軍令一下,齊聲相應。亮複說道:“諸君肯努力殺敵,還有何說?但死戰也是無益,我當誘彼至木門道,並力圍攻,就使他有千軍萬馬,也不能脫逃了。”當下遣人至祁山,囑令老將王平乘夜潛退;自在鹵城拔寨齊起,卻是堂堂皇皇還向漢中。