公孫淵帶著兵到了,合兵一處,掉轉馬頭又和魏兵交戰。卑衍騎馬出來大罵:“賊將別使詭計!你敢出來打仗嗎?”夏侯霸催馬揮刀就迎了上去。沒打幾個回合,夏侯霸一刀就把卑衍砍死在馬下,遼兵一下子就亂了。夏侯霸帶兵追殺,公孫淵帶著敗兵逃進襄平城,關起門來堅守不出。魏兵就從四面把城圍起來了。
這時候正好趕上秋雨下個不停,一個月都沒停,平地上的積水都有三尺深了,運糧的船從遼河口一直能開到襄平城下。魏兵都泡在水裡,坐立不安。左都督裴景進營帳報告說:“雨一直下,營地裡全是泥濘,軍隊不能停留了,請把營地移到前面的山上吧。”司馬懿生氣地說:“抓住公孫淵就在這幾天了,怎麼能移營呢?要是再有說移營的就砍頭!”裴景唯唯諾諾地就退出去了。過了一會兒,右都督仇連又來報告說:“士兵們被水弄得苦不堪言,求太尉把營地移到高處吧。”司馬懿大怒說:“我的軍令已經下了,你怎麼敢故意違抗!”馬上命令把他推出去砍頭,把頭掛在轅門外。這一下可把軍心給震懾住了。
司馬懿卻讓南寨的人馬暫時後退二十里,還允許城裡的軍民出城砍柴、放牛馬。司馬陳群就問他:“以前太尉您攻打上庸的時候,兵分八路,八天就趕到城下,然後就生擒孟達立了大功;現在帶著四萬兵,跑了幾千裡地過來,不讓攻打城池,卻讓士兵們長時間待在泥濘裡,還允許賊兵砍柴放牧。我實在是不明白太尉您是什麼打算啊?”司馬懿笑著說:“您不懂兵法嗎?以前孟達糧食多但是兵少,我是糧少兵多,所以必須得速戰;出其不意,突然攻打,才能取勝。現在遼兵多,我兵少,賊兵飢餓我們吃飽了,何必非要強攻呢?就應該讓他們自己逃跑,然後我們再趁機攻擊。我現在放開一條路,不阻斷他們砍柴放牧,就是讓他們自己逃跑啊。”陳群聽了特別佩服。
於是司馬懿派人到洛陽去催糧。魏主曹睿上朝的時候,大臣們都上奏說:“最近秋雨不停,下了一個月了,人馬都很疲勞,可以把司馬懿召回,暫時停止用兵。”曹睿說:“司馬太尉很會用兵,面臨危險能隨機應變,有很多好的計謀,抓住公孫淵指日可待。你們何必擔心呢?”於是就不聽大臣們的勸諫,派人運糧送到司馬懿的軍營前。
司馬懿在營寨裡又過了幾天,雨停了,天也晴了。這天夜裡,司馬懿走出營帳,抬頭看天象,忽然看到一顆星星,像鬥那麼大,光芒射出好幾丈遠,從首山的東北方向,墜落到襄平的東南方向。各個營裡的將士們看到了,都特別驚訝。司馬懿看到了卻特別高興,對眾將說:“五天之後,星星墜落的地方肯定能斬殺公孫淵。明天就一起全力攻城。”眾將領了命令,第二天清晨,帶兵從四面圍攻城池,築起土山,挖地道,架起炮架,裝上雲梯,日夜不停地攻打,箭像急雨一樣射進城裡。
公孫淵在城裡糧食都吃光了,只能把牛馬都宰了吃。城裡的人都怨恨他,都不想守城了,都想把公孫淵的腦袋砍下來,獻城投降。公孫淵聽到這個訊息,又驚又憂,急忙命令相國王建、御史大夫柳甫,到魏營去請求投降。兩人從城上用繩子吊下去,來告訴司馬懿說:“請太尉後退二十里,我們君臣就自己來投降。”司馬懿大怒說:“公孫淵為什麼不自己來?太沒道理了!”呵斥武士把他們推出去砍頭,把腦袋交給他們的隨從。隨從回去報告,公孫淵大吃一驚,又派侍中衛演來到魏營。司馬懿升帳,讓眾將站在兩邊。衛演跪著爬到帳下,說:“希望太尉息怒。我們約定個日子先把世子公孫修送來當人質,然後君臣再自己綁著來投降。”司馬懿說:“軍事上的大原則有五個:能打仗就打仗,不能打仗就防守,不能防守就逃跑,不能逃跑就投降,不能投降就死!何必送兒子當人質呢?”呵斥衛演回去告訴公孫淵,衛演抱著頭就跑回去了。
衛演回去告訴公孫淵,公孫淵大驚失色,就和兒子公孫修秘密商量好了,選了一千人馬,當天夜裡二更的時候,開啟南門,朝著東南方向逃跑。公孫淵看到周圍沒人,心裡暗暗高興。走了不到十里地,忽然聽到山上一聲炮響,鼓角齊鳴:一支軍隊攔住了去路,中間正是司馬懿;左邊是司馬師,右邊是司馬昭,兩人大喊:“反賊別跑!”公孫淵大吃一驚,急忙撥馬想找路逃跑。這時候胡遵的兵也到了;左邊有夏侯霸、夏侯威,右邊有張虎、樂綝:四面圍得像鐵桶一樣。公孫淵父子沒辦法,只能下馬投降。司馬懿在馬上看著眾將說:“我前天丙寅日,看到大星落在這個地方,今天壬申日就應驗了。”眾將都祝賀說:“太尉真是神機妙算啊!”司馬懿就傳令把他們斬首。公孫淵父子就在對面被砍了腦袋。司馬懿於是帶