与此同时,李世勣和李道宗已先与李世民越过辽河并在645年夏,攻下盖牟(今辽宁抚顺)。在海路,张亮已越过渤海并攻下卑沙(今辽宁大连)。为了震慑高句丽,张亮派先遣船队到鸭绿江入海口,但并没有按唐太宗最先要求进一步向平壤进发。很快,李世勣和李道宗将隋炀帝曾久攻不下的辽东(今辽宁辽阳)包围,并在唐太宗到来时拿下了辽东,白岩城城主孙代音请降。随后李世民开始向安市城(今辽宁鞍山)进军。高丽北部耨萨高延寿、高惠真帅高句丽、靺鞨兵十五万救安市,唐军在驻骅山大破之,高延寿、高惠真帅其众三万六千八百人请降。
三、安市城之战
在攻安市城前,唐太宗就得知安市城地势难攻,安市城主杨万春(中国及朝鮮史书中均失安市城城主的名字,朝鮮民间传说此人名叫杨万春。)机智勇敢有一支强大的守城部队。渊盖苏文摄政高句丽后,杨万春拒绝接受渊苏盖文摄政。渊苏盖文曾发兵攻打安市城,但没有成功,因此只好让杨万春继续担任其职务。于是乎,唐太宗打算先攻打较为容易的建安城(今辽宁营口)。这样拿下安市城南边的建安城,安市城也就不攻而破。李世勣对此表示反对。他认为如果唐太宗先攻建安城,安市城就会切断唐从辽东的供给线使唐陷入被动。于是唐太宗决定还是先围攻安市城。
据悉当唐太宗和李世勣的部队到达安市城后,安市城的守城者见到唐太宗的旗帜就在城墙上大声漫骂,李世民大怒。李世勣于是请求唐太宗拿下安市城后坑殺全城百姓。这使得安市城的守卫者更加奋力抵抗唐军。就这样李世勣一时间拿不下安市城。
一天,唐太宗从安市城中传出杀鸡宰猪的声音。于是告诉李世勣说高句丽人可能在宴请守城部队准备突袭。李世勣于是作好了高句丽会在晚上突袭的准备。事不出所料,安市城当晚真的对唐进行了突袭。不过早有防备的李世民,亲自率兵击退了高句丽的进攻。
与此同时,李道宗开始在安市城的东南构筑一个用于进攻安市城的土山。为此,安市城也不断加高东南边的城墙。双方这样对峙了60天后,李道宗的土山已经高到可以看到安市城的里面。李道宗和他的手下傅伏爱登上了土山顶。忽然,土山出现了倒塌,并倒在了安市城的城墙上。安市城的城墙也因此倒塌。傅伏爱这时却擅离职守。高句丽趁乱发动进攻占领了土山,并使其成为安市城防守的武器。唐太宗一怒之下,公开处死了傅伏爱并下令对土山进行疯狂攻击。不过打了三天也没拿下来。李道宗于是赤脚向李世民请罪。不过李世民宽恕了他。随着冬天的临近,唐的供给也开始匮乏。645年10月13日,唐太宗下令撤退。