魏军进抵襄平西南三十里的首山。公孙渊遣卑衍等逆战,遭司马懿迎头痛击。卑衍、杨祚大败,退守襄平。于是,司马懿乘胜进围襄平。时值7月,雨季来临,辽东大雨不止,太子河水暴涨,平地水深三尺,全军在秋雨冷水中开始围城困敌。由于魏军都泡在雨水之中,行坐不安。左都督裴景见状向司马懿建议说:"雨水不住,整个军营泥泞不堪,军营应当移到前面的山上。 "司马懿听后怒道:"擒获公孙渊只在旦夕,怎么可以移营?如果再有人提移营,立斩不赦!"裴景诺诺而退。过了一阵,右都督仇连又来告诉说:"军士泡在水中苦不堪言,请太尉移营高处。 "司马懿听罢大怒,厉声说道:"我军令已发,你胆敢故意违抗!"即令推出斩首,把首级悬于辕门之外,三军军心为之震慑。
此番大雨,公孙渊以为天助公孙,大水可退魏军。然而司马懿却借助水利,令船自辽河口直驶襄平城下,运送兵员辎重,补充了三军兵员、武器与粮草不足。
司马懿又令南寨人马暂退20里,听任城内军民出城樵采柴薪,放牧牛马,严禁部众干扰阻挠。部将陈群疑惑不解地问司马懿:"以前太尉攻打叛将孟达时,兵分八路,八日至上庸(今湖北竹山县)城下,速擒孟达而成大功;今带甲四万,数千里而来,不令攻打城池,却使部众久居泥泞之中,又任由贼众出城樵牧,不知太尉是何用意?"司马懿笑着说道:"你是不知兵法。从前孟达粮多兵少,我粮少兵多,所以不可不速战,出其不意,突然攻之,方可取胜。今辽兵多,我兵少,贼饥我饱,何必力攻?我们正当任城中人自行出逃,然后乘机攻占。我今放开一条路,不绝其樵牧,是容其出逃啊。 "陈群拜服。
秋八月,天放晴。雨停之后,魏军紧缩了对襄平的包围,并造土山,挖地道,用檐、楼车、钩梯、冲车昼夜攻城,矢石如雨。城内被困一月有余,既无粮草,又无外援,人自相食,死者不计其数。此时,辽军困守待毙,胜利无望,杨祚等首先投降,使公孙渊陷入了危亡的境地。
公孙渊派相国王建、御史大夫柳甫,请司马懿解围退兵,然后他出城"面缚"请罪。司马懿斩掉来使,予以拒绝。公孙渊只好再派侍中卫演前去,提出送自己儿子为人质。司马懿对卫演说:"军事大要有五,能战当战,不能战当守,不能守当走,其余两件事,只有降与死可供选择。既然公孙渊不肯面缚投降,当然勿须送子为质,只有死路一条!"
数日以后,襄平城被魏军攻破,公孙渊与其子公孙修及数百骑突围逃向东南,魏军紧追不舍,杀公孙渊父子于梁水(今辽宁太子河)之上。
司马懿屠城血水比雨水都多
司马懿进入襄平后,点召辽东公卿百官、被俘的将官及十五岁以上参战的士兵。此时,在雨水和湿冷中困守一个多月,终于挨到胜利的魏军士兵对辽东人恨之入骨,面对这些残兵败将,他们个个咬牙切齿。司马懿对被俘的辽东官兵说:"你们马上就知道跟着公孙渊叛国的下场了!"然后,一声令下,屠杀开始,公孙氏政权中公卿以下官员全部被诛杀,武将毕盛等将官二千余人,十五岁以上兵民七千余人也悉数被杀。这是古襄平史上最为惨烈的一页,八月的血水似乎比七月的雨水还要多,悲痛和恐惧像洪水一般淹没了城池,襄平顿时成了一座血城、鬼城和哭城。血洗之后,司马懿还命人把尸体码在一起,用土封上示众,谓之"京观".以屠城之举惩戒抵抗,斩草除根,足见司马懿作为政治家的残忍,而速渡辽水,缓攻襄平,因事用兵的战略战术却显见司马懿作为军事家的杰出和伟大。
攻克辽东后,公孙氏原统治的带方、乐浪、玄菟等郡均向魏国投降,辽东六郡自此列入曹魏版图,司马懿征辽东大获全胜。此次征战,司马懿收户四万,人口三十万,并将中原流民悉数迁回原地。
至此,公孙氏政权历经五十年的统治,于公元238年宣告结束,曹魏完成了对北方的统一。