238年、曹叡は司馬懿に4万余の兵を与え、公孫淵征伐を命じた。公孫淵も卑衍・楊祚らに数万の軍を与えて遼隧に派遣した。司馬懿が遼東に到着すると、卑衍が司馬懿を攻撃したが、司馬懿は胡遵らを派遣して卑衍を破った。
公孫淵は遼隧に数十里(『三国志』には二十里、『晋書』には六・七十里ほどと記されている)の塹壕を掘り、司馬懿の軍を迎え撃ったと言われる。遼隧の公孫淵の防衛陣が堅固と見た司馬懿は、東南に退却したとみせかけて、国都の襄平に侵攻する。公孫淵は遼隧の軍を撤退させ、都の守備に当たらせたが、防戦一方となり敗退を繰り返して、司馬懿に襄平を包囲された。
しかし長雨の時期にさしかかり、雨は1ヶ月に及んだ。平地にも数尺(当時の1尺は約24.19cm)の冠水があった。魏軍では冠水に恐れを抱き、陣営を高台に移そうと主張する者がいたので、司馬懿は却下したうえで「口にすれば斬罪に処す」と軍中に布告し、都督令史の張静が命令に背くと直ちに処刑した。公孫淵軍は出水を良いことに、城外に出て薪を切り出したり牛馬を飼い養ったりし始めたが、司馬懿は今は手を出さず、敵を油断させるよう命じた。司馬懿は敵が襄平を放棄して逃走することを警戒していた。長雨の報告が魏の朝廷にもたらされると、近臣たちは撤退を進言したが、曹叡は司馬懿を信用して却下した。
雨が上がり、包囲陣が完成すると、司馬懿は総攻撃を命じた。公孫淵軍は兵糧が底を突き、人々は飢えで食らいあい、多くの死者が出た。公孫淵は人質を出して和睦しようと画策するが、司馬懿はこれを許さず、公孫淵を捕え、処刑した。公孫淵の子公孫脩をはじめとする一族も討たれ、遼東公孫氏は滅亡した。
戦後、司馬懿はこの地に魏へ反抗する勢力が再び生まれぬよう、当地の15歳以上の男子を皆殺しにし、夥しい数の亡骸で京観を作ったことが後世に伝わる。
すでに公孫淵は孫権に謝罪とともに援軍を求める使いを出した。239年に孫権は援軍として羊衜・鄭冑・孫怡を派遣した。この頃、曹叡が死去すると、魏は遼東に対する備えが薄くなった。その隙をついて羊衜らが遼東の牧羊城(旅順口)で魏の張持や高慮らを破って、その男女を捕虜として帰国した。