不说蜀军夺回祁山,姜维犒劳蜀军将士。却说晋都督司马望闻知,不敢隐瞒,报告晋主。晋武帝大怒,命司马望领军二十余万,率众将来攻蜀国。
姜维派探子探明情况,决定实行先诱敌深入,再打歼灭战的战略,于是命令前线城池坚壁清野,不与晋军主动交锋,必要时可以主动撤退,甚至假装投降。等到晋军深入到了包围圈内,再把他们一锅端了。
晋都督司马望率领晋军首先对祁山发起攻击,原本以为将是一场大战,结果蜀军抵抗了一阵,就全部退入了汉中,留下了一座空寨。晋军顺利占领了祁山,大肆庆祝了一番。接着,晋军又来攻打汉中门户南郑关,蜀军也是抵抗了几日,全军就悄悄地有序地撤走了,留给了晋军一座人去物空的空城。很快,汉、乐二城也望风投降,阳安关蜀军闻知消息,也开始准备撤退。
司马望进兵没多久进展就如此迅速,心里虽然有些疑惑和不信,但很快就自我打消了这种顾虑,以为是蜀军面对强大的晋军压境,心理无法承受,结果很快就丧失了斗志,弃城逃跑。而晋军诸将因为伐吴战争的迅速取胜,普遍还沉浸在一种盲目的自信之中,想法不约而同。
晋军大摇大摆、耀武扬威地深入蜀国领土,没遇到多少顽强抵抗。一路上,他们的军纪十分的涣散,掠夺财物、欺压百姓的事情时有发生,而长官也不怎么管。就这样,晋军一路来到了剑阁城下,包围了剑阁。他们自以为取得了“辉煌”的战绩,连忙写信给司马炎大肆邀功,还添油加醋,虚奏了不少类似于什么斩首无数,取得大胜云云之类的假消息。司马炎暂时还蒙在鼓里,一时也没有多怀疑,也就信了他们。于是长安与晋都同时上演了一出“伐蜀大捷”的好戏。
等到晋军差不多都进入“口袋”了,姜维开始收紧“袋绳”。他派了数支小分队,不停骚扰晋军因为战线而拉得过长的粮道,扰乱他们的军心。随后,蜀军悄无声息地袭击了晋军在蜀国领土建立的屯粮之所,一把火烧毁了晋军几乎所有储粮。又在晋军必经之路上设下埋伏,大破前来增援的晋军。经此一来,晋军军中终于出现了慌乱,也终于想起了撤退。
可是已经来不及了。姜维立即命令钟会率蜀军按计划急行军,以日行千里的速度攻占了晋军最重要的入蜀山关隘口,又马上扮成晋军袭击了南郑关。留在南郑关守城的晋军根本来不及反应,还不知道发生了什么事,城池就被攻破了。
司马望闻知退路被断,大惊失色,连忙派人向长安和朝廷紧急求援,同时撤离剑阁,向组成包围的蜀军发起冲击,试图冲出重围。晋军连冲数次,损兵折将,无一成功。而蜀军却岿然不动。司马望只得率全军扎营固守。
晋主司马炎听闻此讯又惊又怒,追究司马望等人的欺君之罪,立刻下诏将晋军所有已封官爵全部撤销,让他们戴罪立功;同时才派长安晋军出动,前往蜀国解围。
晋军好不容易得到诏令,一看顿时都是一片垂头丧气,士气一时大落。蜀军趁机发起了大反攻,数十万蜀军把心中积蓄了许久的愤怒全都爆发出来,如潮水一般向晋军疯狂冲杀,杀声响彻四野。晋军见状大骇。司马望虽然也在率部奋力苦战,可是终究抵挡不住,阵地在一天天地缩小。
数日过后,晋军死伤惨重,数名大将如胡烈等都已战死,军心动摇,不断有人投降。司马望见势不妙,向晋朝发出了最后一份紧急求援书,决定死守以等待援军,里应外合打出重围,不然就以死谢罪。次日,司马炎得知这个消息,终于慌乱了,这才命令所有关中晋军向蜀地增援。
钟会面对边境危急,连忙飞报姜维。姜维得知,心想只有最快地歼灭国内晋军,才能防止两头作战,于是命令十万蜀军前往边境增援钟会,其余蜀军务必在三日之内消灭晋军,完成头功者可得重赏。
于是蜀军争先进攻,人人悍勇。经过数日激战,晋军死伤无数,全军笼罩在一片死亡的阴影之下,军心尽失,彻底守不住营寨了。司马望决定孤注一掷,于一个月黑风高的夜晚率领剩余的还能战斗的精兵强行突围,整整打了一夜,监军卫瓘战死。蜀军一番激战后虽然也杀伤了不少晋军,但未能成功阻止晋军突围,只好报姜维知道。姜维明白,这是因为晋朝援军就要到了,他们想要里应外合,会师边境。
于是姜维也率精锐拔寨追击,逐渐缩短了距离,在司马望的精兵到达边境后的第二日也终于到了。此时的边境战火横飞,守边蜀军幸亏有姜维新调的十万生力军,才顶住了关中增援晋军的攻击。谁知司马望也率晋军突围而来,两面夹击。边军就要顶不住时,姜维军正好赶到,遂一同发起猛烈反攻,一场惊心动魄的大战后终于击退了关中晋军的攻势。而姜维则包围了司马望的残军。
司马望知道已经无力回天,于是向着晋朝国都的方向跪拜谢罪,接着就率最后的军队向姜维军发起了自杀式的攻击。姜维早已料知,已有准备,于是晋军看到了严阵以待的蜀军,而蜀军借此一战彻底歼灭了晋军。
司马望被夏侯霸生擒,姜维想要劝降,问他他现在的愿望是什么。司马望厉声