魏兵將襄平圍困了幾十天後,恰好到了秋季,陰雨連綿,一直下了三十多天。平地水深三尺,魏兵軍營紮在水中,士兵痛苦不堪;城中也因為幾十天陰雨,糧食吃完了,柴草也用光了,非常著急。這時,司馬懿令大兵後退二十裏,放城中的老百姓出城砍柴砍草、放牛牧馬。和司馬懿一道出征的陳群問司馬懿:“您當年攻上庸、捉孟達時,兵分八路,八天行軍一千多裏,十天之內破了上庸。現在,您帶領四萬軍馬,遠行四千裏,不和遼兵交戰,卻將軍營安在泥濘不堪的平地上,又放城中百姓砍取柴草,這樣,到什麼時候才能打敗公孫淵呢?”
司馬懿說:“用兵打仗,不能一成不變,策略一定要靈活。當年破孟達時,他兵少糧多,我兵多糧少,如果不速戰速決,就很難取勝;假如再讓諸葛亮發覺,發兵助戰,我就更難取勝了。而今天不一樣,我雖然行軍數千裏,但是我糧食豐富,而遼兵卻已經糧草斷絕,我正是一麵圍困,讓他心慌,一麵卻又放一條生路,讓他士兵、百姓逃走。時間一長,遼兵必定內亂,那時候我再乘機攻城,這樣,既不會造成多大傷亡,又不用多費力氣,一舉可破襄平,我何樂不為?你等著,十天之內,我便可攻破襄平城池!”陳群聽了司馬懿的分析,非常佩服。
又圍困了五六天,襄平城中糧食已經吃光,士兵們隻好殺牛宰馬充饑;老百姓已經餓死了不少人。有的軍官已經開始商量,要捉拿公孫淵,開門投降魏軍。公孫淵這時也慌了神,隻得準備投降,派相國王建、禦史大夫柳甫出城,到魏兵寨中,向司馬懿請求投降。王建、柳甫來到司馬懿帳中,說明來意,請司馬懿退兵二十裏,然後公孫淵開城門投降。司馬懿怒道:“公孫淵為什麼不自己來,派你倆來幹什麼?”傳令殺了王建、柳甫二人,不準投降。公孫淵在城中聽說司馬懿不準投降,急得六神無主,又派衛演再次出城,請司馬懿接受投降。衛演出了城,來到魏軍寨前,雙膝跪倒,用膝蓋當腳,跪著走到司馬懿大帳中說:“我主公孫淵明天先將兒子送來作人質,然後全城軍民出來投降!”司馬懿冷笑道:“一軍之主,對陣打仗,能打就打,打不贏就守,守不住就該早點逃走,逃不掉就該早點投降,不能打、不能守、不能逃、不能降就早點尋死,卻拿兒子來做人質!讓天下人笑話!你回去告訴公孫淵,立即出來投降,否則就早點自殺!”衛演被司馬懿一頓臭罵,嚇得連滾帶爬地跑回城中,向公孫淵報告。公孫淵無可奈何,和兒子公孫修秘密商量,決定連夜逃走。
夜半三更,公孫淵帶著兒子公孫修,選了一千人馬,偷偷地開了南門,往東南方逃跑,一連走了二十多裏,沒碰到魏軍。公孫淵正在慶幸自己就要脫險了,忽然聽得山頭上一聲炮響,火把齊舉,司馬懿率大兵衝出,擋住道路,左邊衝出司馬師,右邊衝出司馬昭,背後有先鋒胡遵,大將夏侯霸、夏侯威、張虎、樂綝領兵站出,公孫淵父子及一千人馬被困在當中,士兵們紛紛丟掉武器,下馬投降。公孫淵這時還抱著僥幸心理,和兒子公孫修跪地求饒,希望司馬懿能放一條生路。司馬懿喝令:“將公孫淵父子綁到馬前,先殺兒子,後殺父親,為天下反賊作個榜樣!”公孫淵眼看自己的兒子被一刀斬首,沒等人來殺,自己已經先昏死了過去。司馬懿殺了公孫淵父子,平定了遼東全境,大賞三軍,領兵返回洛陽。