公孙渊是辽东公孙度的孙子,公孙康的儿子。建安十二年,曹操追击袁尚,还未到辽东,公孙康就斩了袁尚的首级献给曹操,曹操因此封公孙康为襄平侯。后来公孙康去世,他有两个儿子,长子叫公孙晃,次子就是公孙渊,都年幼,因此公孙康的弟弟公孙恭继承了职位。曹丕时期封公孙恭为车骑将军、襄平侯。太和二年,公孙渊长大,文武双全,性格刚烈好斗,他夺了叔叔公孙恭的位子,曹睿就封公孙渊为扬烈将军、辽东太守。后来孙权派张弥、许晏带着金银珠宝到辽东,封公孙渊为燕王。公孙渊惧怕中原的势力,就斩了张弥、许晏二人,将他们的首级送给曹睿,曹睿因此封公孙渊为大司马、乐浪公。但公孙渊并不满足,他与众人商议后,自封为燕王,改年号为绍汉元年。
副将贾范劝谏说:“中原给主公的爵位已经是上公了,不算卑贱,现在如果背叛,实在是不顺。更何况司马懿善于用兵,西蜀的诸葛亮都不能取胜,何况主公你呢?”公孙渊大怒,命令左右将贾范绑起来,要斩他。参军伦直也劝谏说:“贾范的话是对的。圣人说:‘国家将要灭亡,必定会有妖孽出现。’现在国内屡次出现怪异的事情:最近有狗戴着人的帽子,披着红衣,上屋像人一样行走;还有城南的乡民做饭时,饭甑之中忽然有一个小孩被蒸死在里面;襄平北市中,地面忽然陷下一个大洞,涌出一块肉,周围数尺,有头有脸有眼有耳有口有鼻,就是没有手脚,刀箭都不能伤害它,不知道是什么东西。占卜的人说:‘有形但不完整,有口但不能发声;国家将要灭亡,所以会出现这种形状。’这三件事都是不祥之兆。主公应该避凶趋吉,不可轻举妄动。”公孙渊勃然大怒,命令武士将伦直和贾范一起绑到市上斩首。
公孙渊任命大将军卑衍为元帅,杨祚为先锋,率领十五万辽兵,杀向中原。边关官员将此事报告给魏主曹睿,曹睿大惊,于是召司马懿入朝商议对策。司马懿上奏说:“我部下有四万马步官军,足以打败贼军。”曹睿说:“你兵少路远,恐怕难以收复辽东。”司马懿说:“兵不在多,而在于能否设奇用智。我托陛下的洪福,必定能擒获公孙渊献给陛下。”曹睿问:“你预料公孙渊会采取什么行动?”司马懿说:“如果公孙渊放弃城池预先逃走,这是上策;如果他坚守辽东抵抗我军,这是中策;如果他坐守襄平,就必定会被我所擒获。”曹睿问:“此去往返需要多长时间?”司马懿说:“四千里地,去一百天,攻打一百天,回来一百天,休息六十天,大约一年就足够了。”曹睿又问:“如果吴、蜀入侵,怎么办?”司马懿说:“我已经定下了守御的策略,陛下不用担心。”曹睿大喜,立即命令司马懿率领军队征讨公孙渊。
司马懿辞别朝廷出城,命令胡遵为先锋,率领前部兵马先到辽东下寨。哨马迅速将消息报告给公孙渊。公孙渊命令卑衍、杨祚率领八万大军驻扎在辽隧,挖了二十多里的围堑,环绕着鹿角等障碍物,防守非常严密。胡遵派人将情况报告给司马懿,司马懿笑着说:“贼军不与我交战,是想拖垮我军啊。我料想贼军大半都在这里,他们的巢穴必定空虚,我们不如放弃这里,直接奔向襄平。贼军必定会去救援襄平,我们就可以在中途截击他们,必定能够大获全胜。”于是,司马懿率领军队从小路向襄平进发。
卑衍和杨祚商议说:“如果魏兵来攻,我们不要与他们交战。他们千里而来,粮草不足以持久作战,等他们粮尽必定撤退。等他们撤退时,我们再出奇兵攻击他们,就可以擒获司马懿了。以前司马懿与蜀军对峙时,他坚守在渭南,结果诸葛亮竟然在军中病逝了。今天的情况正好与那时相同。”两人正在商议间,忽然有探马来报说魏兵已经往南去了。卑衍大惊说:“他们知道我们襄平兵力少,所以去袭击我们的老营了。如果襄平有失守的话,我们守在这里就没有意义了。”于是他们拔起营寨迅速跟随魏兵而去。
早有探马将消息飞速报告给司马懿,司马懿笑着说:“他们中了我的计策了!”于是命令夏侯霸、夏侯威,各自率领一支军队埋伏在辽水之滨:“如果辽兵到了,你们就两边一起杀出。”两人接受了命令前往。他们早早地望见了卑衍、杨祚率领军队前来。随着一声炮响,两边都擂鼓呐喊摇旗,左边有夏侯霸,右边有夏侯威,一齐杀出。卑衍和杨祚无心恋战,夺路而逃;逃至首山时,正遇上公孙渊的军队,两军合兵一处,回头再与魏兵交战。卑衍出马大骂道:“贼将不要使用诡计!你敢出来交战吗?”夏侯霸纵马挥刀迎战。战不到几个回合,卑衍被夏侯霸一刀斩于马下,辽兵大乱。夏侯霸驱兵掩杀,公孙渊带着败兵逃入襄平城,闭门坚守不出。魏兵四面合围。
当时正值秋雨连绵,持续了一个月不停,平地上水深三尺,运粮船从辽河口一直通到襄平城下。魏兵都在水中,行动坐卧都不得安宁。左都督裴景进帐报告说:“雨水不停,营中泥泞,军队不能停留,请求移到前面的山上。”司马懿发怒说:“捉拿公孙渊只在旦夕之间,怎么可以移营?如果再有人敢说移营,就斩首!”裴景唯唯诺诺地退了出去。过了一会儿,右都督仇连又来报告说:“军士们苦于水患,请求太尉