魏明帝景初二年(戊午,公元238年)春季,正月,明帝从长安召回司马懿,命他率军四万人讨伐辽东。参预谋议的大臣有的认为四万兵员太多,军费难以提供。明帝说:“四千里远征讨伐,虽说要出奇制胜,但也应当依靠实力,不应斤斤计较军费。”明帝对司马懿说:“公孙渊放弃守城先行逃走,是上策;据守辽东抗拒大军,是中策;如死守襄平,必被生擒。”明帝说:“那么,三者中他将采用哪一种?”回答说:“只有明智的人,才能审慎度量敌我双方的力量,才会预先有所舍弃。这既不是公孙渊的才智所能达到的,他又会认为我军是孤军远征,不能支持长久,一定是先在辽水抗拒,然后退守襄平。”明帝说:“往返需多少天?”回答说:“进军一百天,攻战一百天,返回一百天,以六十天作为休息日,这样的话,一年足够了。”
公孙渊听到消息,再次源遣使节称臣,向吴国求救。吴国打算杀掉来使,羊说:“不可,这是发泄匹夫一时怒气,而破坏称霸称王的大计,不如就势厚待他,然后派遣奇兵暗中前往,以胁迫公孙渊归附。如果魏讨伐不能取胜,而我军远赴救难,便与远方夷族结下恩情,大义表现于万里之外。如果双方交战难解难分,辽东前方、后方分隔,那么我们就在它边陲郡县,驱逐劫掠而归,也足以表达上天的惩罚,对往事报仇雪恨了。”吴王说:“好!”于是大规模地集结部队,并对公孙渊来使说:“请回去等候音信,我们遵从来函吩咐,一定和老弟休戚与共!”又说:“司马懿所向无敌,我深为老弟担忧。”
明帝向护军将军蒋济问道:“孙权会救援辽东吗?”蒋济说:“孙权知道我们戒备严密,不可能从中渔利,援军深入则力所不及,不深入势必徒劳无功;即使是儿子、兄弟处于那种危险境地,孙权都不会出动,何况是异域他国之人,加之以前还被羞辱过。如今所以向外宣扬出兵救辽,不过是欺骗辽东来使,使我们产生疑惧,一旦我们不能攻克,希望公孙渊向他臣服而已。可是沓渚县离公孙渊所在地相距还远,如果大军受到阻碍,相持不下,战斗不能速决,那么孙权的临时决策,或者轻兵突袭,就不可预料了。”
明帝问吏部尚书卢毓说:“谁可以担任司徒?”卢毓推荐处士管宁,明帝不采用,又问其次的人选,卢毓答道:“敦厚忠诚的是太中大夫韩暨,耿直高洁的是司隶校尉崔林,忠贞纯朴的是太常常林。”二月,癸卯(十一日),任命韩暨担任司徒。
六月,司马懿大军到达辽东,公孙渊命大将军卑衍、杨祚统率步、骑兵数万人驻扎在辽隧,围城挖掘了长达二十余里的壕沟。魏军将领们想要攻城,司马懿说:“敌人所以坚守壁垒不肯决战,是打算拖死我军,现在攻打他们,正中其计。而且敌人主力在此,他们的老巢必定空虚,我军直指襄平,必能攻破。”于是,打出许多战旗,佯作要向南方出动,卑衍等率全部精锐部队随之向南。司马懿率军暗中渡过辽河,向北挺进,直扑襄平。卑衍等大为惊恐,率军连夜撤回。魏各路大军进抵首山,公孙渊再命卑衍等迎战。司马懿迎击,大败卑衍,遂进军包围襄平。
秋季,七月,连降大雨,辽河暴涨,运粮船队从辽口直抵城下。大雨下了一个多月不停,平地水深数尺,魏三军恐惧,打算迁移营垒,司马懿下令军中:“有敢说迁营者斩!”都督令史张静违抗命令,被斩,军心这才安定。敌人依仗水势,砍柴放牧依然如故,将领们想要俘获他们,司马懿都不准许。司马陈说:“从前攻打上庸,八支部队同时进发,日夜不停,所以能用十六天时间攻下坚城,斩杀孟达。这次远征而来,反而更安闲迟缓,我私下感到疑惑。”司马懿说:“孟达兵少但存粮可支撑一年,我军将士四倍于孟达,但粮食不能支持一个月。以一个月攻打一年,怎么可以不快速?以四个兵士攻击一个敌人,即使丧失一半而能够攻克,都应当去做,所以不顾死伤地强攻,是与粮食竞争啊!如今敌众我寡,敌饥我饱,何况雨水如此之大,功力不能施展,虽然应当速战速决,又能干什么呢?自打从京师出发,不担心敌人进攻,只恐怕敌人逃走。如今敌人粮食就要耗尽,可是我们的包围还没完成,抢掠他们的牛马,抄袭他们的樵夫,这是故意*迫他们逃走。用兵是一种诡诈的行为,要善于随机应变。敌人凭仗人多,倚仗雨大,虽然饥饿窘困,还不肯束手投降,应当显示出我们无能以便使他们安心。如果因贪图小利使他们惊吓逃跑,这不是好的计策。”朝中听说大军遇雨,一致打算退兵。明帝说:“司马懿有能力临危控制事变,捉住公孙渊指日可待。”
雨止,司马懿随即合拢包围圈,高堆土山,深挖地道,用干、橹车、钩梯、冲车,日夜攻城,射箭与石密集如雨。公孙渊窘迫危急,粮食已尽,以至人与人互相格杀残食,死亡极多,部将杨祚等投降。八月,公孙渊派遣相国王建、御史大夫柳甫请求解围退兵,如果同意,君臣定当自缚面降。司马懿命斩来使,用檄文通知公孙渊说:“楚国和郑国地位相等,可是郑伯还光着脊背牵羊出城迎降。我是天子的上公,而王建等想要我解围后退,难道不失礼吗?这二个老糊涂,传话失去意指,已被我杀掉。如还有请降之意,就另派年轻有明快决断的人前来。”公孙渊又派侍中卫演,请求指定日期,派送人质。司马懿对卫演说:“军事大要有五条,能战则战,不能战就当坚守,不能坚守就当逃走。剩下的两条路,就只有投降和死了。公孙渊不肯自缚面降,这是决心去死,不必送来人质!”壬午(疑误),襄平城败溃,公孙渊和儿子公孙带领数百骑兵从东南突围逃走,魏军急忙追击,在梁水岸边斩杀了公孙渊父子。司马懿既已进入襄平城;诛杀城中公卿以下官吏及兵民七千余人,积尸封土,筑成大坟,辽东、带方、乐浪、玄菟四郡全部平定。
公孙渊将要反叛时,将军纶直、贾范等苦苦劝阻,都被公孙渊诛杀。司马懿于是堆土加高纶直等人的坟墓,显扬他们的子弟,释放了为朝廷所立而被公孙渊囚禁的叔父。中原人想要返回故里,听任自便。然后班师。
最初,公孙渊的哥哥公孙晃作为公孙恭的人质住在洛阳,公孙渊还未反叛时,公孙晃几次报告公孙渊的变故,打算让魏出兵讨伐。到公孙渊图谋叛逆,明帝不忍心把公孙晃在街市斩首,打算下狱处决。廷尉高柔上书说:“我私下听说公孙晃以前多次自动归附,报告公孙渊已萌生祸心,他虽然是凶犯宗族,但是推究其本心,是可以宽恕的。从前,孔丘曾经明察司马牛的忧虑,祁奚曾经指明叔向没有过失,这都是古代的美好义行。我认为公孙晃确实在先前有过举报,应免他一死;如果他本来没有告发,应应当在街市上斩首示众。如今是进不赦免其性命,退又不公开其罪状,只是紧闭狱门,命他自杀,天下各地,或许会怀疑我们的做法。”明帝不采纳,竟派遣使节带着搀有金屑的酒让公孙晃和他的妻子儿女饮下,然后赏赐棺木丧衣,埋葬在公孙晃的住宅。