蜀漢景耀元年冬,大將軍姜維,命廖化、張翼為先鋒,王含、蔣斌為左軍,傅僉、蔣舒為右軍,胡濟為合後,夏侯霸領中軍,起蜀兵二十萬,殺往祁山。是日,至祁山谷口下寨,紮下三座大營。時,鄧艾在祁山魏寨中,聞報登高望之。回到大帳,鄧艾謂眾將曰:“果不出我所料也。”原來,鄧艾早已算定蜀兵下寨之處,挖好地道,只等蜀兵紮營。今,地道正通蜀兵左寨之內。鄧艾即命鄧忠、師纂各引兵一萬,兩面夾攻蜀營左寨;命副將鄭倫引五百精兵,各持鋼刀,自地道殺入寨中;鄧艾提其餘兵馬,趁亂去劫另外兩寨。
時值二更,蜀營左寨主將王含、蔣斌尚未卸甲就寢,忽聽寨中大亂,急綽槍上馬。正在混戰,鄧忠、師纂兩路魏兵又突然殺至,內外夾擊,王含、蔣斌抵敵不住,棄寨而走。姜維聞左寨殺聲震天,料鄧艾必趁亂來劫中右兩寨。遂傳令曰:“有妄動者斬,魏軍殺到,弓箭射之。”鄧艾引兵十餘次衝擊二寨,皆被弓箭射回,戰到天明,魏兵亦未能殺入寨中。鄧艾收兵嘆曰:“姜伯約深得武侯兵法,遇夜亂,兵不驚,將聞變,而泰然,真將才也。”王含、蔣斌收聚敗軍,至大帳伏地請罪。姜維曰:“非你二人之罪,乃我料敵不足也。”遂差人去下戰書。鄧艾欣然應之。
次日,兩軍兵出,旗鼓相當。姜維按八陣圖,擺下天覆陣、地載陣、風揚陣、雲垂陣、龍飛陣、虎翼陣、鳥翔陣、蛇蟠陣。鄧艾晃動令旗,亦佈下八陣,與姜維八陣一般無二。兩人出馬陣前。姜維笑曰:“你亦布此陣,能變陣否?”鄧艾曰:“我既布此陣,焉能不知變化?”遂拍馬入陣,將中央令旗左右擺動,八陣忽變為六十四陣,各有門戶。鄧艾再出陣曰:“陣變如何?”姜維曰:“雖然不差,敢與我陣相圍乎?”鄧艾曰:“有何不敢?”二人各回本陣。
令旗揮下,兩陣對進,陣形互合,犬牙交錯。姜維令旗忽換,蜀陣突變成“長蛇卷地陣”,刀槍滾滾,殺聲陣陣,將鄧艾圍在垓心。鄧艾不識此陣,心中驚慌,左衝右突不能出圍。鄧艾仰天悲曰:“我一時逞能,中了姜維之計,命喪此地矣!”忽,一彪軍自西北殺入陣中,救出鄧艾,原來是司馬望也。魏兵大敗,祁山九寨盡失。
鄧艾退至渭水安營,乃問司馬望曰:“公何以識得姜維陣法,救我出困?”司馬望曰:“我早年遊學漢上,曾與崔州平、石廣元為友聞此陣法。此乃長蛇卷地陣,我見其頭在西北,故自西北擊之,遂破此陣。”鄧艾曰:“公既識八陣變化,來日擺陣,復奪九寨。”司馬望曰:“我之所學,恐難勝姜維。”鄧艾曰:“無妨,公在前與其鬥陣,艾引兵去抄其後,前後夾攻,可奪九寨。”於是,司馬望令人去下戰書。
姜維爽然應之,提筆批迴。遂顧眾將曰:“我得武侯秘傳,此八陣有三百六十五種變化,與我鬥陣乃班門弄斧耳。然其鬥陣有詐,公等知否?”廖化曰:“其誘我鬥陣,卻分軍襲我之後,此乃前後夾攻之計也。”姜維笑曰:“正是此詐也。”次日,張翼、廖化各引一軍山後埋伏。姜維提兵列陣山前。
鄧艾用鄭倫為先鋒,引軍去抄姜維之後。司馬望引兵前出列陣。姜維笑曰:“八陣圖有周天三百六十五種變化,爾乃井底之蛙,安知其妙乎?”司馬望強辯曰:“休出大言,變陣我看。”姜維曰:“教鄧艾出馬,我佈陣以觀。”司馬望曰:“鄧將軍不好陣法,卻善良謀。”姜維大笑曰:“鄧士載有何良謀?不過教你在前鬥陣,他卻引兵襲我之後。”司馬望大驚。姜維揮鞭,兩翼奔突,殺得魏兵丟盔棄甲,各顧逃命。
先鋒鄭倫引兵在前,來偷蜀軍之後。剛轉過山腳,一聲炮響伏兵殺出,為首蜀將正是廖化,走馬交鋒,殺不二合,廖化一刀斬鄭倫於馬下。鄧艾見有伏兵,心知中計,令軍急退。忽聽又是一聲炮響震盪山谷,張翼伏兵自後殺出。前後夾攻,魏軍大敗,鄧艾身中四箭,逃回渭南寨中。
鄧艾帶傷議退敵之策。司馬望曰:“後主劉禪,寵信黃皓,可用反間計,使其召回姜維。”鄧艾遂令襄陽人黨均入蜀。黨均齎金銀珠寶徑至成都,一面賄賂黃皓,一面散佈流言曰:“姜維欲率軍投魏。”謠言不脛而走,成都人盡皆知。黃皓奏聞後主。劉禪大驚,連夜遣使宣姜維回軍。
鄧艾不出。姜維正思破敵之計,皇命忽至。廖化曰:“將在外君命有所不受。軍情利我,不可退兵!”張翼曰:“大將軍連年用兵,蜀人皆怨,不如乘勝班師。”姜維嘆曰:“皇命不可違也。”遂令各軍依次而退。鄧艾引兵追趕,望見蜀兵刀槍齊整,人馬劃一,徐徐而去,慨然嘆曰:“姜伯約深得武侯統兵之道也。”遂不敢追,勒兵回寨。