全军过河之后,唐太宗下令撤去浮桥,以激励士气,把大本营设在马首山(今辽宁省辽阳市西南首山),派人安抚赏赐江夏王李道宗,破格提拔马文举为中郎将,斩杀了张君乂。唐太宗亲自率领数百骑兵来到辽东城下,看到士兵们背负泥土,填塞护城河,命一名背得特别多的士兵分给自己一部分,骑在马上抱着;唐太宗身边的侍从们争先恐后地抢过泥土,运到城下。
当初,高丽听说唐军军中有飞石车,能把三百多斤的大石头抛到一里开外,都非常害怕,提前在城墙上堆积木头,用大绳索捆绑起来当作碉楼,以抵御飞石。李世勣率部用飞石车、撞车向辽东城发起了猛烈的进攻,昼夜不停,一连进攻十二天;唐军用飞石车抛石、撞车猛击,敌人的碉楼全部击碎。唐太宗亲自率领一万多名精锐骑兵与李世勣的军队会师,把辽东城包围得里三层,外三层,喊杀声惊天动地。
五月十七日,天上突然刮起南风,唐太宗派遣壮士们爬上冲竿的顶端,纵火焚烧了辽东城西南面的城楼。风助火势,大火蔓延,烧到内城,城内顿时陷于一片火海,城内房屋变成一片瓦砾,城内有上万人被烧死。唐太宗趁机下令唐军向城内发起总攻,高丽守军拼死抵抗,但最终抵挡不住,辽东城终于陷落。唐军杀死上万人,俘虏一万多士兵及四万户百姓,缴获粮食五十万石。唐太宗将辽东城改为辽州,并下令点燃烽火,向太子李治报捷。
白岩城位于辽东城东南四十里,背山靠水,地势非常险要,是辽东城的护卫城。打下辽东城之后,白岩城守将孙伐音偷偷派人请降,但不久,他又后悔了。唐太宗大怒,传令军中,答应城破之后,将城内财物、俘虏赏给将士们。
五月二十八日,唐太宗率领唐军朝白岩城(又名白崖城)扑来,把大营设在城的西北面。五月二十九日,右卫大将军李思摩在激战中被流箭射中,唐太宗亲自给他吸出脓血,将士们听说后,无不深受感动。高句丽后方的乌骨城派来一万余名援军,前来声援。右骁卫大将军契苾何力时任前军总管,率领八百精锐骑兵迎战,结果被高丽军团团包围,被长矛刺中腰部;尚辇奉御薛万备(薛万淑、薛万均、薛万彻的小弟弟)也异常骁勇,他单人匹马,挺枪杀入万众之中,把契苾何力解救了出来。契苾何力更是恼火,他把伤口简单包裹一下,又飞身上马,率领部下重新投入战斗,最终把高丽人击破,又追杀了数十里,斩杀一千多人。正巧天黑,两国这才各自罢兵。契苾何力回营后,伤势沉重,唐太宗亲自替他抹药疗伤。
六月一日,唐军对白岩城发起了总攻。李世勣负责进攻城西南,唐太宗亲自在城西北组织攻城。李世勣用撞车、抛石车向城内发起猛攻,顿时巨石、流箭像雨点一样飞入城内。孙代音偷偷派心腹请降,约定扔下刀斧作为信号,并说:“我愿意投降,只是城内有不愿从命的。”唐太宗把唐军军旗交给孙代音的使者,说:“如果真的愿意投降,就把这面军旗插在城墙上面。”等到唐军发起进攻时,孙代音就把唐军军旗插到了城墙上面,城内守军误以为唐军已经登上了城墙,遂放下武器,跟着孙代音投降了。
李世勣看到唐太宗将要接受孙代音的投降,赶忙率领数十名将士来到唐太宗跟前,请求道:“将士们之所以奋不顾身,冒着流箭飞石,就是贪图城内的财物罢了,如今,白岩城眼看就要攻下了,为何要接受他的投降,让全军将士心寒!”唐太宗从马上下来,向李世勣等人道歉说:“将军你说的对。然而,纵兵杀人,掳获他人的妻子儿女,朕于心不忍。将军部下有军功的,朕将用国库内的财物予以赏赐,希望将军能放过这一座城池的生灵。”李世勣这才退下。
唐太宗在水边举行受降仪式,共计得到白岩城内一万多百姓,两千四百多名战士;唐太宗下令赏赐给他们衣服、食物,八十岁以上的老人又分别赏赐给一定数量的丝绸。协防白岩城的其他城池的士兵,唐军一一告知他们这次出征的目的,送给他们食物、工具,任其离去。
当初,辽东城的长史被其部下所杀,侍从官保护着长史的妻子儿女逃到了白岩城。唐太宗被侍从官的义气所感动,下令赏赐给侍从官五匹布帛,并给长史修造一个灵车,送归平壤。以白岩城为岩州,以孙代音为岩州刺史。战后,唐军抓获了刺中契苾何力的高丽人高突勃,唐太宗把他交给契苾何力处置。契苾何力说:“犬马尚且各为其主,何况是人臣呢?他替自己的主子卖命,甘冒白刃刺杀我,此乃忠勇之士啊,我与他互不相识,哪有仇怨?”就把他释放了。莫离支曾派加尸城(在平壤西南)的七百人协防盖牟城,唐军俘获他们后,他们都表示愿意加入唐军。唐太宗说:“你们家属都在加尸城,你们替我作战,莫离支肯定会杀掉你们的家属,让一个人替我参战,却害了一家人的性命,这我不忍。”六月二日,唐太宗也送给他们干粮,把他们送回国了。
六月三日,唐太宗下令以盖牟城为盖州。