제1차 고구려-당 전쟁

배경

수 양제(煬帝)는 고구려-수 전쟁에서 크게 패하였으나, 정신을 차리지 못하고 양저우의 별궁에서 사치스러운 행각을 벌이고 있었다. 이때 수나라 내부에서는 고구려 원정의 실패와 엄청난 대토목 공사로 이미 국력이 피폐해져 각지에서 반란군이 일어났으며, 지방의 호족들도 독립적인 정부를 세웠다. 또한 귀족 계층인 관롱집단(關隴集團)마저 등을 돌려 수나라는 정치적인 기반마저 잃어버렸다. 
617년, 태원 유수 이연 역시 반란에 가담하였다. 이연은 수의 수도인 장안(長安)으로 들어가, 황태손인 양유를 황제로 잇게 했다. 또한, 자신은 수의 대승상이 되었다. 때마침 수 양제가 강도에서 그의 시위장이자 우문술(宇文述)의 아들인 우문화급(宇文化及)과 우문지급(宇文智及) 형제에게 암살되자, 이연은 국호를 당(唐)으로 하고 스스로 제위에 올랐으며, 공이 컸던 둘째 아들 이세민을 진왕(秦王)에 봉했다.
이세민은 또한 각지에서 당나라를 따르지 않는 지방의 호족 세력과 반란군들을 모두 제압하고, 624년 중국을 재통일하였다.
이후 이세민의 인기가 높아지자 이를 불안하게 여긴 형 황태자 이건성(李建成)과 막내동생 제왕(齊王) 이원길은 이세민을 죽일 모책을 세웠고, 급히 자신들 계파의 대신들을 불렀다. 이건성파 중에는, 위징(魏徵), 왕규, 배적(裵寂) 등이 있어, 이세민 제거 작전을 세운다. 그러나, 이것을 알아챈 이세민은 처남 장손무기(長孫無忌)와 장군 이정(李靖), 서세적(徐世勣) 등을 이용해, 도리어 역으로 그들을 이용하려 했다.
626년 7월 2일, 이세민은 부황 이연에게, 형제들이 자기를 죽이려 모함한다 아뢰었고, 이연은 그들을 장안의 궁성으로 불렀다. 그들이 궁성의 현무문으로 들어온 순간, 매복한 이세민의 군사들이 이건성과 이원길에게 화살을 쐈고, 그 자리에서 그들은 살해당했는데, 이를 현무문의 변이라 한다. 3일 뒤에 이연은 할 수 없이 이세민을 황태자로 삼고, 2개월 뒤에 그에게 양위하였다. 이에 이세민이 9월 4일에 황제에 올랐으며, 이듬해에 연호를 정관(貞觀)이라 하니, 이가 바로 당나라 제2대 황제인 태종이다. 태종은 630년 동돌궐을 제압하였다. 이에 거란과 해, 습, 실위가 당에 스스로 속하였다.
한편, 중국에서 이와같은 소용돌이가 한참일 때, 고구려는 전쟁으로 흐트러진 국내의 상황을 바로잡기 위해 노력하였다. 특히 당나라에 자주 사신을 보내 호의적인 태도를 유지했으며, 당나라와 평화적인 관계를 맺고자 했다. 고구려 영류왕은 수 양제의 고구려 침공 때 포로가 된 한인(漢人)을 송환하고 고구려의 포로를 찾아왔다. 624년 당에 조공(朝貢)하고 당 고조(高祖)로부터 상주국(上柱國) 요동군공(遼東郡公) 고구려왕에 봉해졌다. 영류왕은 당에 봉역도(封域圖)를 바치고 제후국임을 인정하였다.
그러나 이세민이 태종으로 즉위한 뒤로 당나라는 고구려에 대한 노골적인 적대 행위를 감행했고, 631년에 당나라가 고구려의 전승을 기념하기 위해 만든 경관(京觀)을 헐어버렸다. 같은해 영류왕은 동북쪽의 부여성(扶餘城)으로부터 동남쪽 바다에 이르는 천리장성(千里長城)의 축조를 시작하였고, 연개소문(淵蓋蘇文)에게 역사(役事)의 감독을 맡겼다. 연개소문은 강경파 외교론자였으며, 이는 온건파 귀족들과의 갈등으로 이어졌다.
당의 세력은 점점 더 강해져 635년에는 토욕혼을, 640년에는 고창국을 격파하였다. 이로써 당나라에 대항할 세력은 동쪽의 고구려를 제외한 대부분 소멸되었다.
640년 영류왕은 세자 고환권(高桓權)을 보내 당의 국자감에 입학시켰다. 자세한 기록은 없어서 사유는 알 수 없지만 이러한 일국의 왕자를 적국에 보낸다는 것은 당나라와 전쟁을 할 뜻이 없음을 나타낸 것이었다. 그러나 641년에 당나라는 직방랑중(주로 군사지도를 관리하는 벼슬) 진대덕(陳大德)을 사신으로 보내 고구려의 정세를 염탐하는 등 고구려와 당나라의 관계는 점차 긴장되어 갔다.
642년 연개소문의 세력이 강해지자 여러 대인(大人)들이 왕과 상의하여 연개소문을 죽이려 하였다. 그것을 미리 안 연개소문은 자기 부(部)의 군사를 모아 거짓으로 열병(閱兵)한다면서 잔치를 베풀어 대신들을 초대한 뒤 모두 죽였는데, 이때 죽은 자가 100여명에 이르렀다고 한다. 그리고 궁궐로 가서 영류왕을 죽이고 대신 왕의 조카인 장(臧)을 새 왕으로 세우니, 그가 바로 고구려의 마지막 왕인 보장왕(寶藏王)이다.
연개소문은 막리지에 오르고 이전 귀족회의가 가지고 있던 병권(兵權)과 인사권(人事權)을 장악하였으며, 스스로 대막리지(大莫離支) 자리에 오르며 절대 권력을 행사하였다. 또한 연개소문은 외교정책을 대당강경책(對唐强硬策)으로 이끌었다.
한편, 고구려와 백제의 침입을 받은 신라는 위기를 느끼고 김춘추(金春秋)를 고구려에 보내 화친을 요청하지만 연개소문은 이를 거절하였다. 이에 신라는 당나라로 사신을 보내 고구려를 견제해 줄 것을 요청하였고, 중재에 나선 당나라가 고구려로 사신으로 사농승(司農丞) 상리현장(相里玄奬)을 보내 고구려를 협박하였다. 이에 연개소문은 "우리가 신라와 간극이 벌어진 지는 벌써 오래다. 지난번 수나라가 쳐들어왔을 때 신라는 그 틈을 타 우리 땅 500리를 빼앗아 그 성읍을 모두 차지했으니 그 땅을 돌려주지 않으면 싸움은 그칠 수 없을 것이다."라고 사신에게 대답하였다.
이러한 보고를 받고 태종은 다시 644년에 장엄(蔣儼)을 보내 협박했지만 연개소문은 이를 일축하고 그를 토굴에 가둔다. 이로써 전쟁의 빌미를 제공했다. 이에 당 태종은 "요동은 원래 중국 땅인데 수나라가 네 번이나 군사를 일으켰으나 취하지 못했다. 내가 지금 동정(東征)함은 중국을 위해 자제(子弟)의 원수를 갚고 고구려를 위하여 군부의 치욕을 씻으려 할 뿐이다. 또 사방이 크게 평정되었는데 오직 고구려만 평정되지 않았으니 내가 더 늙기 전에 이를 취하려 한다."라고 하였다.
당 태종은 장작 대감을 설치해 전선을 제조하고, 식량을 영주로 집결하여 전쟁을 준비하였다. 그러나 많은 대신들이 수나라의 예를 들어 고구려 정벌에 반대하였으나 태종은 자신감에 충만하여 이를 강행하였다. 
결국 644년 10월, 당 태종은 연개소문의 시역을 성토한다는 명분으로 고구려를 침공하였다.

제1차 여당전쟁

644년 6월 당은 고구려의 요동 공격을 명령한 후 11월 수륙 양면으로 약 80만 명에 달하는 대규모 원정군을 편성해 공격을 시작했다. 이때 당군은 각종 공성용(攻城用) 기구를 총동원했다. 당 태종은 다음해 2월에 낙양(洛陽)을 출발하여 직접 원정길에 올랐다. 또한 돌궐과 거란으로 구성된 이민족의 군대도 다수 동원되었다. 
당 태종은 정예군 수십만을 유주에 집결시키고, 요동을 향해 세 갈래 길로 진군하기 시작했다. 장검이 정예 선발대 6만명을 이끌고 유성으에서 출발하였다. 총 사령관 이세적은 6만의 요동도행군을 이끌고 현도성으로 향했다. 이도종에게 6만의 군사로 신성을 치게 하고, 선발대 장검에게 6만의 군사로 건안성을 치게 했다. 당 태종의 친정군인 어영군 20만이 뒤를 따랐다. 거기에 당 태종이 친히 거느린 6도행군 36만이 뒤따랐다.  또한 장량(張亮)이 상륙군 4만3000을 포함한 수군 2도행군 12만명, 1000척의 함대로 등주에서 출발하였다. 본대가 80만에 이르렀지만 새로운 수레의 발명으로 수송부대가 본대의 2배에서 1/4로 줄어들었다. 그래도 수송부대를 합쳐서 100~104만에 이르는 부대였다.

개전 초기: 신성,개모성,비사성 전투

이세적(李世勣)의 당의 선봉 요동도행군은 유성을 떠나면서, 형세를 과장하여 마치 회원진을 향하는 것으로 위장하였다. 하지만 비밀리에 북쪽 샛길로 크게 돌아서 우회하여, 고구려가 예상치 못하던 북쪽 통정진으로 진군하였다. 이렇게 방어하는 상대의 허를 찌르는 기습 전법은 고대부터 현대에 이르기까지 수 차례 반복되었다. 과거 카르타고의 한니발이 로마를 침공할 때 로마로 들어오는 길목 마르세이유에서 방어진을 치고 있는 로마군을 피해 북쪽으로 크게 돌아서 알프스산맥을 넘어 로마를 침입하여 허를 찔렀고, 1940년5월, 2차세계대전 당시 서부전선에서 독일이 프랑스의 주력부대가 방어하는 마지노선이 아닌 세당의 아르헨 산골로 독일의 주력 기갑부대를 집중시켜 돌파하여 영국-프랑스군의 허를 찔렀듯이, 수 백년 전 사마의가 요동 공손연 정벌 때 그랬던 것 처럼, 당의 대군도 고구려 주력이 방어하고 있던 강한 곳을 피하고 전혀 예상치 못한 곳으로 기습 도하하였다. 과거 고구려-수 전쟁때 수나라가 정공법으로 요하를 건너려고 엄청난 인적,물적 손실을 치뤘던 것에 비하면 한층 전략적으로 연구한 허허실실의 기습이었다. 당나라 군도 고구려의 방어를 만만치 않게 본 결과이다.
마침내 여름 5월 1일(음력 4월 1일), 이세적이 이끄는  당의 선봉 요동도행군은 통정진에서 요하를 건너 현도성에 이르렀다. 당시 현도성 추정 병력은 5천여명 정도이고 옛날 현도군을 이치시키기 위해 임시로 지은 진에 가까운 작은 성이었다. 허나 개모성이나 신성등 대성으로 향하는 전략적 요충지였다. 고구려의 각 성들은 모두 성문을 닫고 수비태세로 들어갔다. 작은 현도성이 쉽게 함락되자 5월 5일(음력 4월 5일), 선봉부대의 부대총관 강하왕 이도종은 군사 6만여 명을 거느리고 고구려의 요동지역 제1의 요지인 신성에 이르렀고, 절충도위 조 삼량은 기병 10여 명을 데리고 직접 성문을 위압하였다. (신성은 요동성과 같은 평지성이지만 지대가 높은 평산성이었다. 대성이기에 수비에 용하지는 않았으나, 훗날 기록들로 미루어 적어도 4~5만의 적지않은 군대가 주둔한것으로 보인다.)하지만 10여일간의 신성 공격이 여의치 않자 5월 15일(음력 4월 15일), 이도종은 이세적의 요동도행군과 합류하여 군량 10만섬이 보관되어 있던 개모성으로 기민하게 이동하였다. 당시 개모성의 군대는 약 3만여명으로 추정되고 신성, 요동성과 더불어 요동의 평지 대성이었다. 연개소문은 주변의 작은 성 가시성의 700명을 보내 개모성을 지원하도록 하였다. 하지만 이들은 곧 개모성 사람들이 안타깝게 바라보는 와중에 돌궐 기병에 둘러싸여 이세적의 포로가 되고 만다. 치열한 공방전에 당나라 행군총관 강확이 활에 맞아 전사하였지만 마침내 (5월 26일(음력 4월 26일) 이 세적과 강하왕 도종이 개모성을 쳐서 빼앗고, 개모성의 인구 2만 호(약 14만명)와 양곡 10만 석을 탈취한 후, 개모성을 개주(蓋州)로 개칭하였다.
한편  두 번째 남쪽 방면으로는 영주 도독 장검이 6만의군사를 거느리고 선봉이 되어 요수의 남쪽 하구를 건너 건안성을 급습한다. 이에대한 기록이 누락되어 있어 어느쪽이 승전인지는 불분명하나, 건안성의 위치와 후일 안시성으로 향하는 진군로를 볼때 당군측의 피해가 적지 않았음을 알 수 있다. 아마도 건안성과 주변 박작성, 석성 군사들에게 당한듯 하다.
세 번째 해로를 통한 방면으로는 장량(張亮)이 당의 수군을 1000여척(약 12만. 상륙군 4만 3천)거느리고 산동의 동래로 부터 바다를 지나 비사성(卑沙城)을 습격하였다. 비사성은 삼면이 절벽으로 되어있고, 다만 서문으로만 오를 수 있는 천혜의 요새이다. 그리고 성에는 1만여 병력이 주둔하였고 수군의 전략적 요중지였다. 하지만 유격전에 명성을 떨친 당나라 장수 정명진이 군사를 데리고 선봉으로 야습을 시행하였고 부총관 왕 대도가 먼저 성에 올랐다. 5월 31일(음력 5월 1일), 마침내 성이 함락되고 남녀 8천 명이 죽었다. 천혜의 요새였던 비사성은 예상과 달리 당의 야간 기습에 너무나 쉽게 함락되고 말았다.

1차 요동성 전투

4월29일, 마침내 고구려의 요동 최대의 성, 요동성으로 당의 이도종이 이끄는 요동도행군의 선발 기병부대가 도달하였다. 요동성은 과거 고구려가 점령하기 전 중국의 한나라 시절부터 삼국시대 공손씨의 지배를 받을 때는 양평성으로 불리었었고 예전 사마의가 함락시키고 공손연을 참수했던 그 성이다. 이때 당태종 이세민이 직접 이끄는 주력 친정군은 요하의 늪 지대에 이르렀는데, 진흙이 2백여 리나 펼쳐져 있어 사람과 말이 통과할 수 없었다.장작 대장 염 입덕이 흙을 퍼부어 다리를 만들었다. 이에 따라 군사들이 행군을 멈추지 않고 늪 지대 동쪽으로 통과하였다. 요동성은 다른성보다 많은 군사(10여만으로 추정)가 주둔하였으나 평지성이며 둘래가 40km가 넘는 대성이었다. 
한편 급박한 상황 속에 고구려는 신성과 국내성의 보병과 기병 4만 명을 긴급히 보내 요동성을 구원하려 하였다. 이때 고구려 4만군의 지휘관은 미상이다. 5월8일, 고구려의 4만 구원군은 요동성에 도착하였고, 당의 이세적이 이끄는 요동도행군의 선봉 이도종이 이끄는 요동도행군의 선발 기병부대와 요동성 앞에서 마주치게 되어 교전을 시작한다. 고구려 4만 구원군을 맞아 당의 이도종은 4천 명의 기병으로 이에 대항하려 하였으나 너무 적었다. 그리하여 당군의 군사들은 모두 병력의 차이가 현격하다 하여, 도랑을 깊이 파고 보루를 높이 쌓으며 왕이 올 때까지 기다리는 것이 좋겠다고 말하였다. 하지만 이도종이 말했다. "고구려는 군사가 많음을 믿고 우리를 경시하고 있으나, 그들은 멀리서 왔기 때문에 피곤한 상태이므로 공격하면 반드시 이길 수 있다. 이렇게 하여 길을 깨끗이 닦아놓고 왕을 기다리는 것이 마땅할 것이다. 어찌하여 왕 앞에 적을 넘겨 드리려 하는가?" 도위 마문거가 말했다. "강한 적을 만나지 않고서야 어떻게 장사의 능력을 드러내겠느냐?" 이도종은 말을 마치자, 말을 채찍질하여 달려가 공격하였다. 이도종이 용맹히 돌진하여 가는 곳마다 고구려 군사가 쓰러졌다. 이에 당나라 군사들의 마음이 약간 안정되었다. 
하지만 본격적인 전투가 시작되고 고구려의 대군이 전열을 가다듬고 반격하자 숫적으로 열세를 보이던 당군은 패주하게 된다. 행군 총관 장군예가 퇴주하고 당 나라 군사가 크게 패배하였다. 이도종은 흩어진 군사를 수습하여 높은 곳에 올라섰다. 그는 고구려 군대의 진영이 혼란스러운 것을 보고, 다시 기병 수천 명을 이끌어 돌격해왔다. 하지만 이 때 이세적이 이끄는 요동도행군의 군대가 도착하여 고구려 군을 협공하였다. 이리하여 고구려 군사가 크게 패배하여 물러나니, 사망자가 1천여 명이었다.

2차 요동성 전투

신성과 국내성에서 급파되었던 고구려 지원군 4만의 거센 공격을 우선 뿌리친 이세적의 요동도행군은 당태종 이세민의 친정군을 기다렸고 당태종의 친정군은 요수를 건넌 다음 다리를 철거하여, 마침내 5월10일 요동성에 도달하여 이세적의 요동도행군과 합류하였다. 당태종은 강하왕 이도종을 위로하여 상을 주고, 마문거를 몇 급 올려 중랑장으로 삼고, 장군예의 목을 베었다. 이세민은 직접 수백 명의 기병을 거느리고 요동성 밑에 가서, 군사들이 흙을 지고 참호를 쌓는 것을 보았다.이세민은 직접 제일 무거운 것을 자기 말에 실었다. 이에 시종들이 다투어 흙을 운반하여 성 밑에 쌓았다.
당군은 이세적의 지휘 하에 밤낮 없이 12일 간 요동성을 맹공격하였다. 여기에 당태종 이세민의 친정군이 합류하여 정예 부대를 이끌고 성을 수백 겹으로 포위하였다. 북소리와 함성이 천지를 진동시켰다.성 안에는 주몽의 사당이 있었고, 이 사당에는 쇠사슬 갑옷과 날카로운 창이 있었는데, 망녕되게도 이전 연 나라 시대에 하늘이 내려 준 것이라고 하였다. 바야흐로 포위 태세가 긴박해지자, 미인을 부신으로 분장시켜 놓고 무당이 말하기를 "주몽이 기뻐하니 성은 반드시 보전될 것이다"라고 하였다. 또한 요동성에는 백제가 황색 칠을 한 쇠 갑옷을 바치고, 또 검은 쇠로 만든 무늬있는 갑옷이 있어 군사들에게 입혀 종군하였다.
요동성은 요동지역 최대의 성이자 고구려의 거점이었다. 하지만 요동성은 험준한 산에 의지하여 구축된  백암성, 안시성, 건안성같은 다른 고구려의 산성과는 달리 평지에 지어진 성이었다. 학자들은 평지성에 성의 크기도 크기때문에 방어가 어려운 요동성은 요동의 전력의 1/3인 7~8만 혹은 10만여 병력이 주둔했다 보고있다. 당나라군은 예전 고구려-수 전쟁 때 수나라군이 동원했던 포차보다 훨씬 위력적이고 강력한 개량된 포차를 동원하였다. 당군은 이러한 신형 포차를 열지어 놓고, 큰 돌을 3백 보 이상 날려 보냈다. 돌이 맞는 곳마다 모두 허물어졌다. 아무리 철옹성인 요동성이라도 평지에서 이러한 포차 공격에는 취약할 수 밖에 없었다.
고구려군은 나무를 쌓아 누대를 만들고 그물을 쳤으나 돌을 막을 수 없었다. 당나라 군사는 충거로 성 위의 집을 부수었다. 이 때 남풍이 세게 불자 당왕 이세민이 민첩한 군사로 하여금 장대의 꼭대기에 올라가서 성의 서남루를 불사르게 하였다. 불이 성 안으로 타들어가자 이세민은 곧 장병들을 지휘하여 성에 오르게 하였다. 
마침내 5월17일,과거 고구려-수 전쟁때 수나라가 총력을 기울여도 함락되지 않았던 요동 최대의 요새 요동성이 함락되었다. 요동성은 고구려 요동지역의 가장 크고 상징적인 요동 최대의 성이었다. 이때 성이 함락하여 사망자가 1만여 명이었다. 당 나라는 군사 1만여 명과 남녀 주민 4만 명을 생포하고, 양곡 50만 석을 탈취하였으며, 요동성을 요주(遼州)로 개칭하였다. 당군은 이제 뒤이어 남쪽의 백암성(白巖城)으로 몰려가 공격을 시작했다.

백암성 전투

한편 고구려는 요동성에 이어 이번에는 백암성을 구원하기 위해 오골성(烏骨城)의 고구려군 1만명을 긴급히 출동시켰다. 고구려 지원군은 백암성에 도착하였고, 마침 백암성을 공격하려던 철륵출신 총관이었던 선봉 계필하력의 선발 기병부대를 요격한다. 이 때 계필하력은 고구려 장수 고돌발에게 옆구리가 창에 찔리는 큰 부상을 입고 낙마한다. 목숨이 경각에 달린 순간, 당나라 장수 설만비가 가까스로 고구려 기병의 포위를 뚫고 중상을 당한 계필하력을 구해낸다. 당의 기병부대는 패퇴하여 물러났고 당군을 물리친 고구려 지원군은 백암성에 입성하여 합류하였다.
하지만 5월28일, 이제는 당태종 이세민의 친정 대군이 백암성으로 몰려왔다. 이세적은 백암성 서남 쪽을 공격하고, 당태종 이세민은 서북쪽으로 갔다. 당군이 총공세로 나서고 당의 우위대장군 이사마는 성 앞까지 진격하여 공격하던 중 고구려군사의 화살을 맞고 쓰러졌다. 백암성은 신성과 같이 험준한 산에 의지하여 지은 산성으로 당군이 신형 포차를 앞세워 공성에 나섰지만 평지의 성 요동성과는 달리 역시 함락이 역시 용이하지 않았다.
하지만 신성과 달리 백암성은 내부의 결속때문에 무너지게 된다. 백암성주 손대음(孫代音)이 비밀리에 심복을 보내 항복하기를 청하고, 성에 나와 칼과 도끼를 던지는 것으로 신호를 삼겠다고 하면서 말하기를 "저는 항복하기를 원하지만 성 안에 따르지 않는 자가 있다"라고 하였다. 이세민은 당 나라 깃발을 사자에게 주면서 "틀림없이 항복하겠으면 이 깃발을 성 위에 세우라"고 하였다. 손대음이 그 깃발을 세우니 성 안 사람들은 당 나라 군사가 이미 성에 올랐다고 생각하여, 모두 손대음을 따라 항복하였다. 마침내 6월1일 백암성이 함락되었다. 
이세민은 요동성을 공격하여 승리하였을 때, 백암성이 항복을 청했다가 얼마 후에는 후회하였다. 이세민은그들의 변심을 보고 노하여 군사들에게 명령하였다. "성을 빼앗으면 마땅히 빼앗은 사람과 물건을 모두 전사들에게 상으로 주리라." 이에 사기가 오른 당군은 더욱 거새게 백암성을 공격했다. 그러자 손대음이 다시금 항복을 하려 한 것이다. 이 때 이세적은 이세민이 백암성의 항복을 받으려는 것을 알아채고, 갑병(부장) 수십 명을 데리고 와서 이세민에게 말했다."사졸들이 화살과 돌을 무릅쓰며 목숨을 돌보지 않고 싸우는 것은, 노획물을 탐내기 때문입니다. 지금 성이 거의 함락되어 가는데 어찌하여 항복을 받음으로써 전사들의 마음을 저버리려 합니까?" 당태종 이세민은 말에서 내려와 사과하며 말했다.
"장군의 말이 옳다. 그러나 군사를 함부로 풀어 사람을 죽이고, 그들의 처자를 사로잡는 것은, 내가 차마 저지를 수 없는 행위이다. 장군의 부하로서 공로가 있는 자에게는 내가 창고의 물건으로 상을 줄 것이다. 장군으로 인하여 이 성이 속죄받기를 원한다."
이세적은 물러나와 성 안의 남녀 1만여 명을 잡아, 물가에 장막을 치고 그들의 항복을 받았다. 그런 후에 곧 먹을 것을 주고, 80세의 노인에게는 정도에 따라 비단을 주었다. 다른 성의 군사로서 백암성에 와있던 자들은 전부 위로하여 타이르고, 양식과 군기를 주어 원하는 곳으로 가게 하였다. 이보다 앞서서 요동성 장사가 부하에게 피살되는 사건이 발생했었다. 그 성의 성사 한 사람이 장사의 처자들을 데리고 백암성으로 도망해왔었다. 이세민은 그의 의리를 가상히 여겨 비단 다섯 필을 주고, 장사의 상여를 만들어 평양으로 보냈다. 백암성을 암주(巖州)로 개칭하고, 항복한 고구려 백암성 성주 손대음을 자사로 삼았다. 이로써 고구려의 요동방어선의 중심부였던 요동성,백암성이 차례로 당군의 수중에 넘어가게 되어 고구려는 절체절명의 위기를 맞게 된다.

신성, 건안성 전투

한편 요동성,백암성을 차례로 함락시킨 당나라군은 방향을 돌려 아직 함락시키지 못한 북쪽의 고구려 요동방어선 제1의 요지 신성을 다시 공략하기 위해 다시 재공격하였다. 앞서 고구려가 신성과 국내성, 오골성을 근거지로 계속 지원군을 보내자, 당군으로써는 신성을 북쪽에 남겨두고 남쪽으로 진공하는 것이 부담이 되었다. 하지만 신성은 성 내부의 내분이 일어나 함락되었던 백암성과 달리 신성의 방어전은 굳건했다. 전투는 상당히 치열했고 당시 당나라군이 점령한 개모성에 진주한 당나라 장수 위정은 매일 밤 들려오는 북과 함성소리로 두려워했다고 회고할 만큼 전투는 치열했다.
하지만 훗날 당나라가 고구려와의 645년 신성전투,건안성전투,주필산전투, 667년 금산전투를 당나라와 고구려의 4대전투로 회고한 것처럼 큰 전투였지만 당나라군은 수확을 얻지 못하고 물러났다. (안타깝게도 이렇게 수 차례 당나라의 거센 공격을 막아낸 용맹한 신성의 성주 이름은 미상이다.) 
한편 건안성(建安城)방면에서도 역시 당나라 장검의 부대가 와해되며 고구려는 방어에 성공한다. 건안성 성주 고원은 고구려군을 이끌고 장량의 당나라 부대를 기습해 성공하는 등 당나라군을 계속 괴롭혔다. 이때 당나라의 진영에서는 건안성(建安城) 공격을 앞두고 많은 의견이 오고갔다. 이세적은 건안성이나 오골성(烏骨城)이 중요하지만 안시성을 먼저 점령하지 않으면 배후로부터 공격을 받아 당나라의 군량미 수송에 차질이 생길 것이라 주장하였다. 그러나 태종은 안시성이 연개소문의 정변 때도 안시성 성주가 복종하지 않아 공격을 받았으나, 항복시키지 못한 점을 들어 우회할 것을 주장했다. 결국 당태종은 이세적의 의견에 따르기로 결정하였다.

주필산 전투

신성과 건안성에서 고구려의 강력한 반격으로 밀려난 당군은 요동성에서 수일간 전열을 정비한 후 작전회의를 한 후 방향을 남쪽으로 돌려 안시성으로 진격한다.
선봉이었던 요동도행군 제1군 장사귀가 이끄는 선발부대가 안시성 부근에 도달하였고 안시성의 고구려군과 격전을 벌인다. 안시성의 고구려군은 당군을 포위, 섬멸직전으로 몰아 넣었다. 이 때 당나라의 장수인 유군앙이 고구려군에 겹겹이 포위당하여 빠져나오지 못하고 있었다. 이러한 위급한 시기에 당시 사병이었던 설인귀가 단창필마로 뛰어들어가 고구려군의 장수 한명의 목을 잘라 말에 걸었다. 고구려군의 포위망이 뒤로 물러나고, 유군앙은 겨우 구조된다. 그는 일개 사병으로서 장수가 해야 할 일을 했던 이 전투 이후 설인귀의 명성은 군중에 알려지게 되었다. 당의 선발부대는 더이상 공격하지 못하고 당태종의 대군을 기다리게 된다.
요동 방어선 북단의 신성, 최남단의 건안성이 당군의 공격을 막아내고 있으나 중앙의 요동지역 최대의 요동성과 그리고 주변 백암성, 개모성등이 차례로 함락되어 요동의 위기는 이제 극단을 치달았다. 6월11일, 당태종의 당의 대군은 남하하여 안시성 부근까지 진격하였다. 한편 고구려에서는 요동방면에 위기상황을 타개하고자, 거국적인 15만 대군을 긴급히 요동방면으로 급파한다.(당시 고구려의 병력 규모는 60여만으로 추정된다)
마침내 6월 20일, 당의 대군을 맞아 고구려의 대군은 안시성 부근에 도착하여 강 건너 당군을 마주 보고 건곤일척의 승부를 하게 되었다. 
이전과 이후의 한국사에서 수 많은 이민족의 침입이 있었지만 대부분의 전쟁 양상은 침공한 이민족을 상대로 농성 혹은 적은 규모의 군으로 항전하였지만 이렇게 단일 전투에서 15만명이상의 대군을 동원하여 이민족의 대군과 평원에서 대등하게 대회전을 했던 경우는 귀주대첩과 주필산전투 단 두번 뿐이다. 또한 중국의 한족과-한국의 한민족 간에 벌어진 단일 전투 사상 거의 유일한 대규모 평원 대회전 전투가 된다.(이 주필산 전투 당시 당나라 동원 병력은 30만이 넘는다.) (이후 중국 측 사서에는 667년 고구려와 당의 금산전투에서 고구려군 20만이 동원되었다는 기록이 있으나 자세한 전투의 기록은 없다.)
당나라 진영에서 당태종 이세민은 작전 회의에서 "지금 고구려군에게 전략이 있다면 그것은 다음의 세 가지이다. 첫 째는, 군사를 이끌고 직접 앞으로 나가서, 안시성과 연결되는 보루를 쌓고, 높은 산의 험한 지세에 의지하여 성 안의 곡식을 먹으면서 말갈군을 풀어 우리의 마소를 약탈하는 것이다. 이렇게 되면 우리가 공격한다고 해도 빨리 항복받을 수 없고, 돌아가려 해도 늪지가 장애가 될 것이므로, 우리 군사들은 앉아서 곤란한 지경에 처하게 된다. 이것이 상책이다. 둘 째는, 성 안의 군사를 데리고 야간 도주를 하는 것이다. 이것이 중책이다. 셋 째는, 자기의 지혜와 재능을 모르고, 우리와 대적하는 것이다. 이것이 하책이다. 그대들은 두고 보라. 그들은 필히 하책으로 나올 것이니, 그들을 사로잡게 되는 작전이 내 눈 앞에서 벌어질 것이다."
사서에 기록된 당태종 이세민이 언급한 첫 번 째 전략은 적의 대군이 몰려왔을 때 단기 승부로 바로 맞서지 않고 험한 지형의 장점에 의지하여 장기전으로 전쟁을 몰고 가며 침공군의 보급의 약점을 공략하는 고구려 방어군의 가장 확실한 전략이었다.   
한편 반대 편 고구려 진영에서는 나이 많고 경험이 풍부한 대대로 고정의가 북부욕살 위두대형 고연수와 남부욕살 대형 고혜진에게 말했다.
"진왕(당태종)은, 안으로는 여러 영웅들을 쳐 없애고, 밖으로는 오랑캐들을 굴복시켜 스스로 왕이 되었으니, 이는 세상을 제도하라는 천명을 받은 인재이다. 지금 그가 전국의 군사를 이끌고 왔으므로 이에 대적할 수는 없다. 나의 계책은, 군사를 정비하되 싸우지 않고, 여러 날을 두고 지구전을 펴면서 기습병을 보내 그들의 군량 수송로를 차단하는 것이다. 저들은 군량이 떨어지면 싸우려 해도 싸울 수 없고, 돌아가려 해도 갈 길이 없게 될 것이다. 이 때만이 우리가 승리할 수 있는 때이다." 
고구려에도 인물이 있었다. 고구려의 노회한 대대로 고정의는 이러한 당나라 침공군의 약점을 정확히 간파하여 당과 바로 승부를 내기 보다는 최대한 침공군과 전투를 피하고 지구전을 통해 침공군을 약점을 최대화하려 하였다. 역사적으로도 이러한 외세의 침략에 맞서 지구전을 통해 먼거리 원정군의 약점을 극대화하는 전략은 동서고금을 막론하고 수 차례 있었다. 한니발의 카르타고 침공군에 맞섰던 로마가 그랬고 중국 삼국시대 촉의 제갈량의 침공에 맞섰던 위나라 사마의가 그랬다. 하지만 그 당시에도 침공군에 맞선 이러한 대 전략에 상반되게 전장 분위기와 혈기를 못 이겨 일선 지휘관들에 의해 수 차례 치명적인 패배를 기록했던 것처럼 당시 고구려군의 선봉 고연수와 고혜진은 기만의 명수 당태종의 계략에 넘어가게 된다. 
당태종은 곧 장손무기 등 신하들과 함께 수백 명의 기병을 데리고 고지에 올라 산천의 형세 가운데 복병시킬 수 있는 곳과 병력의 출입이 가능한 곳을 관찰하였다. 이 때 강 건너의 고구려군은 말갈군과 연합하여 진을 치고 있었으니 그 진의 길이는 40리에 달할 정도로 형세가 컸다. 
당태종이 이러한 고구려의 대군을 보고 크게 두려워하는 기색을 나타냈다. 고구려-당 전쟁 시작 이래 늘 숫적으로 당나라군이 우위에 있었고 맞서는 고구려군이 이렇게 많은 수가 몰려와 진을 치고 있는 모습을 당태종은 본 적이 없었다. 이 때 강하왕 이도종이 말했다."고구려는 전력을 다하여 천자의 군대를 방어하고 있으니, 틀림없이 평양의 수비에는 약점이 있을 것입니다. 저에게 정예군 5천 명을 주시어, 그들의 근본을 뒤엎게 하십시오. 그리하면 싸우지 않고도 수십만 군사를 항복시킬 수 있습니다."
이것은 예전 로마의 스키피오가 한니발의 카르타고 대군을 앞에 두고 카르타고의 수도를 급습하여 함락시켰던 것이나 중국 삼국시대 때 위나라 장수 등애가 촉나라를 공략하기 위해 한중에 주둔하고 있는 강유의 촉군을 피해 촉의 수도 성도를 기습하는 계책과 같았다. 하지만 자존심이 강한 당태종 이세민은 이런 모험적인 전략을 채용하지 않고 정공법으로 물리치려 하였다. 

한편 선봉 고연수와 고혜진은 군사를 거느리고 강을 건너 안시성 밖 40리까지 진군하였다. 당태종 이세민과 당군의 수뇌부가 걱정하는 것은 고구려의 대군이 안시성과 연계하여 수성 및 지구전을 펼치는 것이었다. 따라서 고구려군을 최대한 끌어 들이기 위해 앞서 고구려 고돌발에게 중상을 입은 계필하력 대신 돌궐 출신 좌위대장군 아사나두이에게 명하여 돌궐의 기병 1천 명을 이끌고 고구려군을 유인하기 위해 공격을 하였다. 첫 교전에서 당 나라 군사가 크게 패하였고, 선봉 고연수는 "다루기가 쉽구나"라고 말하며, 앞을 다투어 진격하였다. 마치 수 백년 전 고구려-위 전쟁때 관구검의 유인전술에 고구려 동천왕이 말려들었던 것처럼 고연수는 안시성 동남방 8리 지점까지 진격하여 산에 의지하여 진을 쳤다. 
고구려군을 안쪽으로 끌어 들이는데 성공한 당태종은 다시 한번 고구려군을 방심하게 하려고 사신을 보내 고연수에게 거짓으로 말했다.
"나는 너희 나라의 권력 있는 신하가 임금을 시해한 죄를 물으러 온 것이니, 우리가 서로 전투를 하게 된 것은 나의 본심이 아니다. 너희 나라 경내에 들어오니 마초와 양식이 충분하지 않아 몇 개 성을 빼앗기는 하였으나, 너희 나라가 신하의 예절을 지킨다면 잃었던 성은 반드시 돌려 줄 것이다."
이미 초전에 승리를 거둔 고연수는 이 말을 믿고, 방심하여 제대로된 수비 태세를 더 갖추지 않았다. 
6월21일 밤,이세민은 문무관을 불러 계책을 의논한 다음, 이세적에게 보병과 기병 1만 5천 명을 주어 서쪽 고개에 진을 치게 하고, 장손무기와 우진달에게 정예군 1만 1천 명을 주어 기습병을 조직하였다. 그들은 산의 북쪽에서 협곡으로 나와 우리 군사의 후면을 공격하게 하고, 이세민은 직접 보병과 기병 4천명을 이끌고 북과 나팔을 옆에 끼고 깃발을 눕혀서 산으로 올랐다. 이세민은 모든 군대에게 북과 나팔 소리가 들리면 일제히 맹공하라고 명령하였으며, 또한 관리에게는 항복받을 장막을 조회당 옆에 설치하도록 명령하였다. 
이 날 밤, 유성이 고연수의 고구려군 진영에 떨어졌다. 6월22일 아침, 마침내 고연수 등은 유인하러 온 이세적, 장손무기의 군사가 적은 것만 보고 군사를 동원하여 공격하려 하였다. 당태종 이세민은 전방의 고구려군을 유인하려던 장손무기의 부대에서 먼지가 일어나는 것을 보고는, 북을 치고 나팔을 불며 깃발을 들게 신호를 보내도록 하였다. 이에 따라 당의 모든 군사들이 북을 치고 함성을 지르며 진격하였다. 갑작스러운 당의 대군의 사방에서 몰려들자 고연수는 크게 놀라 군사를 나누어 방어하려 하였다. 그러나 고구려 진영은 사방에서 몰려드는 당군의 공격에 이미 큰 혼란에 빠지고 말았다.
동서고금을 막론하고 포위된 쪽은 거의 일방적인 학살전이 이루어 졌다. 카르타고 전쟁때 한니발군이 로마군을 포위에 넣고 일방적인 학살전을 벌였던 칸나에 전투 때도 그랬던 것 처럼 삼면이 포위된 고연수의 고구려군과 말갈군은 거의 일방적으로 몰리고 있었다.
전투 당일 비가 왔던 것으로 추정된다. 사서에는 마침 천둥과 번개가 쳤는데, 당나라군에서 사병 설인귀가 기이한 복장을 하고, 고함을 치면서 고구려 진영으로 깊숙히 들어왔다고 기록되어 있다. 당나라의 대군이 이 때를 이용하여 공격해왔다. 또한 한 쪽에서는 신라의 골품 귀족 출신이었던 좌무위 과의(左武衛 果毅)설계두는 선봉에서 서서 포위한 고구려군과 격렬히 전투를 벌이며 용감히 싸웠으나 전사하고 말았다. 삼면으로 포위된 고구려군은 크게 패하였고 고연수,고혜진은 마침내 당의 공격 포위망을 빠져 동쪽 강가로 다시 돌아왔으나 이미 3찬여 명의 사망자가 생겼다.
고연수,고혜진은 남은 군사를 거느리고 강 건너 고구려 본군으로 합류하려 하였으나 이미 당태종은 장손무기에게는 교량을 전부 철거하여 고구려 군사의 귀로를 차단하게 하였다. 결국 고구려 본대와 합류하지 못한 고연수,고혜진은 강을 건너지 못한 채 남은 군을 이끌고 북쪽 산에 의지하여 자체 수비를 강화하였다. 이제 당태종 이세민은 모든 부대에 명령하여 고구려 군사를 포위하게 하고, 이로써 고구려군은 완전히 고립되었다. 
한편 치열한 전투가 끝나고 당태종은 신라인 임에도 자국인보다 목숨 바쳐 싸우다 전사한 설계두에 크게 감명받아 측근을 시켜 설계두의 시신에 어의(御衣)를 덮어주고, 대장군에 추증하고, 예로써 장사를 지내 주었다. 또한 당태종은 활약이 뛰어났던설인귀의 공을 크게 치하하며 그를 유격 장군으로 임명하였다. 
6월23일, 포위된 고연수 고혜진의 고구려군을 구원하고자 고구려군이 강을 건너 대공격을 시작한다. 그리고 이에 맞서 고구려군의 도하를 저지하려던  당나라군과 큰 교전을 시작된다. 이 때 밀려온 고구려 대군을 맞서기 위해 선봉으로 지휘하던 당나라 좌무위장군 왕군악이 전사할 정도로 전투는 치열했다.
하지만 후방의 고구려 본군은 고립된 고연수와 고혜진의 부대에 도달하지는 못한 것으로 보인다. 포위된 고연수와 고혜진의 부대는 더 이상 버티지 못하고 마침내 남은 군사 3만 6천8백 명을 이끌고 항복하였다. 후일 기록에 신성과 건안성에 주둔군 10만 이상이 남아있던것으로 미루어, 이때 고구려 참전 인원은 5만여명이고 그 중 1만3천2백이 전사당하여 나머지가 항복한것으로 보인다. 당태종 이세민은 욕살 이하의 관장 3천 5백 명을 선발하여 당나라 지역으로 옮기고, 나머지는 모두 석방하여 평양으로 돌아가게 하였으며, 말갈인 3천 3백 명은 전부 생매장 하였다. 말 5만필·소 5만두·명광 갑옷 1만 벌을 노획하였으며, 기타의 기자재도 노획하였다.이세민이 갔던 산의 명칭을 주필산으로 개명하고, 고연수를 홍려경, 고혜진을 사농경에 임명하였다.
당태종이 이끄는 당나라군은 아직 후방에 고구려 대군의 일부가 있었지만 안시성 앞 주필산에서 고구려군을 크게 격파하고 선봉 고연수와 고혜진이 항복하고 3만여 고구려군이 투항하였다. 이제 당나라군은 눈 앞의 안시성을 향해 정조준하기 시작한다.

안시성 전투

7월5일, 당나라군은 안시성(安市城) 동쪽 고개로 이동하였고 부근의 작은 성 후황성과 은성등 작은 성 5곳을 공격하여 함락시켰다. 고구려의 대군은 아직 건재하고 있었고  고구려군과의  전투 중 많은 희생자를 내게 된다. 당측의 사서에는 7월13일 수많은 전사자의 시체에 표식을 하고 이후 일부 군대가 퇴각할 때 같이 귀환하도록 하였다. 
8월 8일 고구려군의 첩자 고죽리가 당나라군에 포로로 잡혔다. 이에 따른 구체적인 기록은 없으나 사서에는 이후 고죽리는 다시 당나라 진영을 탈출한 것으로 기록되어 있다. 그리고 8월 10일 드디어 당태종의 당의 대군은 안시성 공격을 시작한다. 이에 안시성 사람들이 당군의 깃발과 일산을 바라보고, 즉시 성에 올라 북을 두드리고 함성을 지르니 당태종이 크게 분노하였다. 이세적은 성이 함락되는 날 안시성의 남자를 모두 구덩이에 묻어 버릴 것을 황제에게 요청하였다. 안시성 사람들은 이 말을 듣고 더욱 굳게 수비하였다. 당 나라 군사가 오랫동안 공격하였으나 안시성을 함락시킬 수 없었다. 무엇보다 요동성과 개모성 함락에 큰 활약을 보인 당군의 공성 신무기였던 각종 포차들의 활약이 현저히 떨어졌다. 안시성은 평지의 요동성과 달리 산에 의지한 산성이다. 따라서 중국의 중원이나 요동성 같은 평지에서 큰 효과를 발휘했던 신무기의 효과들이 크게 반감되었다.
안시성 공략이 어려워지자, 이때 고연수·고혜진 등이 태종에게  "저희들이 이미 대국에 몸을 맡겼으니, 정성을 바치지 않을 수 없습니다. 천자께서 빨리 큰 공을 이루어 우리가 처자와 만나게 하여 주기를 원합니다. 안시성 사람들은 그의 가족들을 생각하여 자진하여 싸우고 있기 때문에 빨리 함락시키기는 쉽지 않습니다. 저희들은 고구려의 10여 만 명의 병력을 가지고 있었음에도 불구하고, 황제의 깃발을 보는 것만으로 사기가 꺾여 허물어졌으며, 백성들의 간담이 서늘하였습니다. 오골성의 욕살은 늙어서 수비가 견실할 수 없으니, 군사를 옮겨 그곳을 공격한다면, 아침에 도착하면 저녁에는 승리할 것이며, 도중에 있는 여타의 작은 성들은 위풍만 보고도 반드시 허물어질 것입니다. 이러한 연후에 그곳의 자재와 군량을 거두어 북을 울리며 전진하면, 그들은 틀림없이 평양을 지켜내지 못할 것입니다."라고 하여 안시성 대신 오골성을 직접 공격할 것을 주청하였다. 여러 신하들이 또 말했다.
"장량의 군사가 사성에 있으니, 그를 부르면 이틀이면 올 수 있습니다. 고구려가 두려워 하고 있는 틈을 이용하여, 장 량의 군사와 힘을 합하여 오골성을 함락시키고, 압록강을 건너 곧바로 평양을 빼앗는 것이 이번 일에 달렸습니다."
지난 번 주필산 전투를 앞두고 고구려 15만 대군과 대치하였을 때 강하왕 이도종의 의견과 비슷하였다. 마침내 마음이 흔들린 당태종 이세민이 이 말을 따르려 하자 장손무기가 홀로 나서서 다음과 같이 말했다. "천자의 원정은 보통 장수들의 정벌과는 다르다. 따라서 모험을 하면서 요행을 바랄 수는 없다. 지금 건안성과 신성의 무리가 아직도 10만이나 되는데, 우리가 만약 오골성으로 간다면, 고구려 군사들이 반드시 우리의 뒤를 추격할 것이다. 그러므로 먼저 안시성을 점령하고 건안성을 취한 후에 군사를 먼 곳으로 진군시키는 것이 옳다. 이것이 만전의 계책이다." 장손무기의 말을 듣고 이세민은 곧 앞서의 계획을 중지하였다.
당태종은 안시성이 만만치 않음을 깨닫고 건안성 패잔병(장량의 6만의 수군)과 이도종, 장검의 군사등을 모두 모았다. 당태종 친정군과 6도행군 56만도 안시성으로 집결했다. 어느 날 태종은 성 안에서 들리는 닭과 돼지의 소리를 듣고 이세적에게 밤 중 안시성에서의 기습 공격에 대비할 것을 명하였다. 이날 밤, 안시성의 군사 수백 명이 성에서 줄을 타고 내려왔다. 태종은 이 말을 듣고 직접 성 밑에 와서 군사를 소집하여 재빨리 공격하였다. 안시성 군사 중에 사망자가 수십 명이나 되었고, 나머지는 도주하였다.
그럼에도 안시성 공략은 난공불락이었다. 당군은 강하왕 이도종의 건의로 성의 동남 쪽에 토산을 쌓아 점점 성으로 접근해왔다. 성 안에서도 역시 성벽을 더욱 높게 쌓아 굳게 방어하였다. 양군은 하루에도 6, 7회씩 교전하였다. 당나라 군사의 충거와 포석이 누대와 성위의 작은 담을 허물었으나, 성 안에서는 그 때마다 목책을 세워 부서진 곳을 막았다. 
당나라는 60일 동안 총인원 50만 명을 동원하여 토산(土山)을 쌓았다.토산이 완성되자, 이 토산의 꼭대기가 성보다 높게 되어 밖에서는 성 안을 내려볼 수 있었다. 이도종이 과의(果毅)부복애(傅伏愛)를 시켜 500명의 군사를 거느리고 산정에 주둔하여 적을 대비하게 하였다. 그러던 중에 산이 폭우로 허물어지면서 성을 덮치는 바람에 성의 일부가 무너졌다. 토산이 무너지자 안시성의 군사 수백 명이 성이 허물어진 곳으로 나가 싸워서 마침내 토산을 탈취하여 그곳에 참호를 파고 수비하였다. 태종은 토산을 빼앗기자 진노하여 부복애의 목을 베어 조리를 돌리고, 장수들에게 명령하여 성을 공격하게 하였다. 고구려측 군사 1만, 당군 3만이 전사하였다. 
결국 이길 수 없자, 도종이 맨발로 황제의 깃발 아래 가서 죄를 청했다. 이에 태종은 이도종에게 "너의 죄는 죽어 마땅하지만, 나는 전한 무제가 왕회를 죽인 것이 진 목공이 맹명을 등용한 것만 못하다고 생각하고 있으며, 또한 너는 개모성과 요동을 점령한 공로가 있기 때문에 특별히 용서한다."라고 하였다. 
이날 토산 전투, 그리고 그 뒤 펼쳐진 토산 쟁탈전에서 당군 수만명이 목숨을 잃었고 고구려의 피해도 만만치 않았다. 또 3일간의 토산 쟁탈전 이전의 석달간 공방전에서 당군은 하루 2~3천의 피해를 입었다고 전해진다. 하루 피해인원을 평균 2500이라 쳐도 무려 20만이 넘는 사상자를 낸 것이었다. 고구려측도 안시성 군사 중 요서전에 따라갈 수 있을만한 인원이 3만이 채 안되었다고 한다. 전투는 그만큼 치열했는데, 당 태종이 안시성주 양만춘의 화살에 맞아 한쪽 눈을 잃었다는 야설도 있다. 당의 공격을 막아낸 안시성의 성주에 대하여 역사서에는 어떠한 자료도 없이 그냥 "안시성의 성주"로만 기록되고 있었다. 특히 《삼국사기》의 저자 김부식은 안시성주에 대해 크게 칭송하면서 이름이 남아있지 않은 것을 한탄하였다. 그러나 조선 시대 송준길(宋浚吉)의 《동춘당선생별집》과 박지원의 《열하일기》에는 안시성 성주의 이름을 "양만춘(梁萬春)" 혹은 "양만춘(楊萬春)"이라고 밝히고 있다.

당나라의 퇴각과 평가

645년 9월 18일 마침내, 당 태종은 요동이 추워지고, 병사들과 군마를 관리하기 힘든 것과 군량이 떨어질 것을 예측하여 군대의 철수를 명령하였다. 
9월20일, 당나라군은 점령하고 있었던 요동성에 도착하였고 9월21일, 당나라 군대는 요택으로 달아났다. 당나라 군대가 선택할 수 있는 퇴각로는 3개가 있는데, 요하 하구는 고구려 건안성이 버티고 있어 갈 수가 없다. 따라서 당나라 군대는 진흙밭인 요택을 건너는게 아닌 요하 중류로 가야만 했다. 하지만 당나라 군대는 이 길을 가지 않았다. 이는 요동 지역의 고구려군을 의식한 것이라고 추측된다. 태종은 이세적과 이도종에게 명령하여 보병과 기병 4만을 이끌고 후군으로 서게 하였다. 그들이 요동에 이르러 요수를 건너려 하였다. 그러나 습지 때문에 수레와 말이 통과할 수 없었다. 태종은 장손무기에게 명령하여 1만 명의 군사로 하여금 풀을 베어 진흙길을 메우게 하고, 물이 깊은 곳에서는 수레를 다리로 삼아 건너도록 하였다. 태종이 직접 말채찍으로 나무를 묶어 이 일을 도와 주었다.
겨울 10월, 태종은 포구에 이르러 말을 멈추고, 진흙길 메우는 작업을 독려하였다고 좋게 말했지만, 이세민 조차 나서지 않을 정도로 심각한 사지(死地)를 건너고 있었다. 20일동안의 퇴각은, 바람과 눈이 휘몰아쳐 군사들의 옷이 젖고 폭풍과 눈 엄청난 추위에 동사하여 죽은 군사가 매우 많고 소,말 10마리중 일고여덟마리가 죽는 비참한 결과를 초래했다. 혹자는 고구려군이 후미를 공격해 피해를 입은것을 모두 추위때문에 죽었다고 핑계한다며 비판하기도 한다. 
당태종은 퇴각하는 길에서 "만일 위징이 있었다면, 나로 하여금 이번 원정을 못하게 하였으리라."라고 말하였다. 이때 당 태종의 퇴각에 관련하여 많은 이견이 있는데, 근대의 역사학자인 신채호는 태종이 패전의 수치를 감추고자 일부러 자신들의 전과를 부풀리고, 피해는 최소화 하였다고 비판하였다. 또한 신채호는 《조선상고사》에서 연개소문이 베이징 일대 또는 중국 내륙까지 당 태종을 추격했다고 주장했다.
그러나 이를 두고 한국의 역사학계에서는 당나라군이 퇴각로를 함락시킨 요동성 일대로 하지 않고, 진펄지대인 요택으로 한 점과 많은 양식을 이전에 고구려에게서 탈취하였는데, 군량미가 떨어진다는 것을 핑계로 당군이 서둘러 퇴각한 점. 그리고 황제가 직접 퇴각을 도왔다는 점과 자신들의 구체적인 피해상황은 정확히 하지 않은 점을 들어 이 전쟁을 당나라의 패배로 보고 있다. 일각에서는 퇴각로가 요동 주요 성을 우회한것으로 보아서 이당시 고구려군이 요동성 등 10성을 회복했을것이라고도 한다. 
한편, 항복한 고연수는 항복한 뒤로부터 항상 분개하고 한탄하다가, 얼마 후에 홧병으로 죽고, 고혜진은 결국 장안에 도착하였다.

연개소문 암살 계획

645년 고구려 원정에서 실패하고 돌아온 당나라는 복수심이 컸다. 과거 모든 내전에서 승전 했으며 밖으로 주변 모든 이민족 정벌에 성공했던 터라 패전의 분함을 참지 못하는 당나라인들이 많았다. 특히 고구려 원정 때 참전했던 왕부참군 교보명은 장안으로 돌아와서 사공 방현령에게 고구려를 취할 수 있는 방법을 진언했고 방현령은 소개장을 써서 당태종에게 올렸다.
당태종이 교보명을 부르자 이에 교보명은 그 앞에서 말하길 "자신이 직접 평양에 가서 고구려를 설득하고 그것이 안되면 한나라때의 자객 부개자처럼 연개소문의 목을 베어 그 나라를 항복시키겠다"라고 하였다. 이에 당태종은 그 용기를 가상히 여겨 자신이 찾던 자가 이와같은 인물이라고 칭찬했지만 그를 차마 사지인 고구려에 보내지 못하고 대신 자신의 옆에 두었다.

설연타의 멸망과 고구려 침공 전략 수정

646년 당은 동쪽의 고구려를 제외한 거의 유일한 위협세력이었던 북쪽의 설연타마저 멸망시켰다. 646년8월, 철륵의 11개 부족장이 보내온 사신들이 공물을 바치며 당에 충성을 맹세하였다. 
647년 보장왕 6년, 당나라 태종이 마지막 남은 숙적 고구려 침공을 다시 하려 하였다. 당나라 조정의 논의가 다음과 같았다.
"평원의 다른 족속들과 달리 고구려는 산에 의지하여 성을 만들었기 때문에 조기에 함락시킬 수 없습니다.. 앞서 왕이직접 원정했을 때, 그 백성들은 농사를 짓지 못했으며, 우리가 정복한 성에서는 곡물들을 수확하였으나, 가뭄이 계속되어 백성의 태반이 식량이 부족하게 되었습니다. 이제 만약 적은 군사를 자주 보내, 그 영역을 번갈아 침략하여 그들로 하여금 방어에 지치게 하고, 쟁기를 놓고 싸움터로 나가게 한다면, 수년 내에 천리의 들판은 적막해질 것이며, 민심은 저절로 이반될 것이니, 이렇게 되면 압록강 이북은 싸우지 않고도 빼앗을 수 있을 것입니다."
따라서 당태종은 이때부터 지속적으로 국지적인 소모전을 통해 고구려의 변경을 끊임없이 침범하여 고구려의 변방을 피폐하게 만든 후에 고구려를 크게 침공하는 것으로 전략을 수정한다. 역사적으로 강국이 주변 국을 침공할 때 대규모 원정을 통해 정복한다. 과거 역대 중화왕조도 그랬고 이후에도 그랬다. 하지만 이 당시 당나라에게 고구려 정복은 그만큼 쉽지 않았고 결국 상대적으로 소국의 약점을 물고 늘어지는 장기적 전략을 채용한 것이다. 그 만큼 한번에 정복할 수 없는 상대로 인식하고 있었다.

647년 신성,적리성 전투

당태종 이세민은 유격전에 능한 좌무위 대장군 우진달을 청구도행군대총관으로 삼고, 우무위 장군 이해안을 보좌관으로 하여, 군사 1만여 명을 출동시켜, 누선을 타고 내주로부터 해로로 진격케 하고, 또한 태자 첨사 이세적을 요동도행군대총관으로 삼고, 우무위 장군 손이랑 등을 보좌관으로 하여, 군사 3천 명을 거느리고, 영주 도독부의 군사와 함께 신성으로 진격하게 하였다. 이 두 부대에는 모두 수전에 익숙하고 전투에 능한 자들을 선발하여 배속시켰다. 당나라의 이 세적의 군사가 요수를 건너 남소 등의 몇 성을 지났는데, 고구려 군이 모두 성을 등지고 싸웠으므로, 이세적의 당군이 이들과 교전하였고 외성을 불지르고 돌아갔다.
가을 7월, 당나라는 유격전에 능한 우진달·이해안 등을 다시 보내어 고구려 국경에 들어와 1백여 차례 싸웠다. 당군은 석성을 격파하고, 적리성 아래까지 진격해왔다. 고구려 군사 1만여 명이 나가 싸웠다. 당나라 장수 이해안이 고구려 군사를 공격하여 이 때 사망한 고구려 군사가 3천명이었다. 
또한 당태종은 장차 해로를 통한 대대적인 침공을 위해 송주 자사 왕파리 등에게 명령하여, 강남 12주의 공인들을 징발하여, 큰 배 수백 척을 만들어 고구려를 공격하려 하였다.

648년 박작성 전투

당태종이 조서를 내려 우무위 대장군 설만철을 청구도행군대총관으로 삼고, 우위 장군 배행방으로 그를 보좌케 하여 장병 3만여 명과 누선 및 전함을 가지고 내주로부터 바다를 건너 고구려를 공격하였다.
여름 4월, 오호진 장수 고신감이 군사를 거느리고 바다를 건너와 공격하였다. 그는 우리의 보병, 기병 5천명과 역산에서 조우하여 우리 군사를 이겼다. 
그날 밤, 고구려군사 1만여 명이 당군의 고신감의 배를 습격하다가 당군의 복병이 출동하여 물러났다. 
마침내 당태종은 고구려가 피폐되었다고 판단하고, 다음 해에 30만 대군을 출동시켜 일거에 멸망시킬 것을 논의에 붙였다. 하지만 이 때 당의 신하들이 의견을 말했다. "대군이 동방으로 원정하기 위해서는 반드시 1년의 군량미를 갖추어야 합니다. 그리고 이러한 군량을 마소나 수레에 실을 수는 없으니, 마땅히 선박을 준비하여 수로로 운반해야 할 것입니다. 수 나라 말기에 검남 지방만은 도적의 침입이 없었고, 지난 번의 요동 정벌 때에도 검남이 참여하지 않았으니, 그곳의 부유한 백성들로 하여금 선박을 만들게 해야할 것입니다." 따라서 당태종이 이 말을 따라 좌령 좌우부 장사 강위를 검남도에 파견하여, 나무를 베어 선박을 만들게 하였다. 큰 배 중에는, 길이가 1백 척, 넓이가 오십 척이 되는 것이 있었다. 이 배들은 따로 사신을 파견하여 수로를 통하여 무협에서 강남과 양주를 거쳐 내주로 가게 하였다.
요동지역의 고구려 변경을 집중적으로 공격하였던 당나라는 이번에는 장군 설만철 등으로 하여금 보다 고구려의 안쪽을 공격하게 하였다. 설만철이 이끄는 당군은 바다를 건너 압록강으로 들어와서, 압록강 하구의 고구려 요충지 박작성 남쪽 40리 지점에 진을 쳤다. 지정학적으로 압록강 하구는 고구려의 최후 방어선에 해당하는 군사적 절대 요충지이다. 훗날 661년 2차 고구려-당 전쟁 때에도 계필하력이 이끄는 당의 대군이 이곳을 급습하여 점거하였다.
기습 침공해온 당나라군을 맞아 박작성 성주 소부손이 보병과 기병 1만여 명을 거느리고 방어하였다. 설만철이 우위 장군 배행방으로 하여금 보병과 모든 군사를 거느리고 소부손의 고구려군을 일제히 공격하자 고구려 군사가 무너졌다. 배행방 등이 진격하여 포위하였으나, 박작성은 산을 이용한 험준한 요새였으며, 압록강으로 튼튼하게 막혀 있었기 때문에 쉽게 함락시키지 못하였다. 한편 고구려는  장군 고문으로 하여금 오골성·안지성 등 여러 성의 군사 3만여 명을 거느리고 와서 두 진으로 나누어 구원하였다. 당나라 설만철이 군사를 나누어 이에 대응하여, 고구려 군사들과 크게 격전을 벌인 후 물러났다.
당태종은 또한 내주 자사 이도유에게, 군량과 기계를 운반하여 오호도에 비축하라는 명령을 내렸다. 이는 장차 대 정벌을 일으키려는 것이었다.
하지만 다음 해 649년 보장왕 8년, 여름 4월, 당나라 태종이 사망하였다. 당태종은 유언으로 조칙을 내려 더 이상의 고구려 정벌을 중지하게 하였고 이로써 당나라와의 국지전은 중단되었으며 그 해 대거 고구려를 침공하려던 당의 계획 또한 백지화되었다.

649년~654년 당태종의 사망과 일시 소강상태

당태종이 사망하며 모든 고구려 침공 관련 중단할 것을 유언으로 남긴 이후 한동안 고구려와 당의 국지전은 당분간 없이 소강상태를 유지하였다. 
이무렵 당은 당태종 사망 이후 당고종이 등극하였고 장손무기가 사실상 권력을 쥐고 당태종 시절의 정관의 치에 이은 영휘의 치로 불리는 안정적인 정세에 있었고 이후 당나라 측천무후와의 내부 권력 투쟁이 발생하면서 대외적으로 신경 쓸 겨를이 없었다.

654년 고구려의 거란 원정

654년 보장왕13년 겨울 10월, 고구려는 당에 빼앗긴 거란에 대한 영향력을 발휘하기 위하여 장수 안고로 하여금 고구려군과 말갈군을 보내어 거란을 공격하게 하였다. 하지만 거란의 송막 도독 이굴가가 고구려의 침공에 대항하여 신성에서 고구려군을 기습하여 고구려군 5백명을 참살하고 7백여필의 말을 빼앗는 전과를 얻고 고구려의 공격을 막아 내어 고구려 원정군을 물리친다. 
또한 그 해, 신라에는 김춘추가 왕위에 오른다. 그 다음 해 655년 보장왕 14년 봄 정월, 고구려가 백제·말갈과 더불어 신라의 북쪽 변경을 침공하여 33개 성을 점령하였는데, 이렇게 고구려에 신경을 쓰지 못하는 사이,백제,고구려와 끊임없이 전쟁을 치루며 수세에 몰린 신라의 김춘추는 위기타개책으로 또 다시 당에게 구원요청을 하였고 당나라가 이를 받아들여 고구려를 견제하기 위해 또 다시 소규모의 고구려 침공을 계획하게 된다.

655년 귀단수 전투

이에 655년 보장왕 14년 2월, 당나라는 신라를 구원 요청 때문에 영주 도독 정명진과 좌위 중랑장 소정방을 보내어 군사를 거느리고 와서 공격하였다.
정명진은 과거 645년 1차 고구려-당 전쟁 때 고구려의 비사성을 야간 기습하여 함락 시켰던 유격전에 능하여 명성을 떨치는 유격전의 적임자였다.
여름 5월, 또 다시 정명진이 이끄는 당군이 요하를 건너 오자, 고구려 군사는 상대방 군사가 적은 것을 보고, 성문을 열고 귀단수를 건너가 전투를 벌였다. 
정명진 등은 고구려를 맹공하여 크게 격전이 벌어졌고, 이 때 고구려쪽은 군사 1천여 명이 피해를 보았다. 정명진의 당나라 군은 고구려의 외성과 촌락에 불을 지르고 바로 철수했다.

658년 적봉진 전투

보장왕 17년 여름 6월, 당나라 영주 도독 겸 동이 도호 정명진과 우령군 중랑장 설인귀가 군사를 거느리고 요서지역의 고구려 영토를 기습 침범하였다. 당나라 설인귀는 이 때 부장이 아닌 처음으로 군을 직접 지휘하게 되었는데 고구려의 적봉진을 함락시키고 고구려 군사 100여명을 포로로 잡는 공을 세운다. 당나라의 침범이 예사롭지 않자 이에 고구려에서는 대장 두방루(豆方婁)에게 3만의 병사를 붙여 파견하여 요격하였고 정명진과 설인귀의 당나라군에 대적하여 크게 격전이 벌어졌다.

659년 횡산, 석성 전투

다음 해,보장왕 18년 겨울 11월, 이번에는 당나라 우령군 중랑장 설인귀가 처음으로 단독으로 군대를 지휘하여 고구려 요서지역 영토를 침범한다. 이에 고구려는 대장 온사문(溫沙門)이 이에 요격하러 출병, 횡산(요양부근의 화표산)에서 설인귀의 부대와 치열하게 전투를 하였다. 
또한 이어서 설인귀의 당나라군은 석성으로 침입하여, 고구려군과 전투를 한다. 특히 이 전투에서는 당나라 측 사서에 당시 지휘하던 설인귀의 활약이 묘사되어 있는데 설인귀는 단기로 진격하여 고구려군의 궁사를 생포한 일화가 소개되어 있다. 석성 전투가 시작되자 마자, 고구려군에는 한 신궁(神弓)이 있어서 원거리에서 연속하여 당나라군의 병사 10여명을 사살하는 신기를 보이자, 설인귀가 이에 활을 맞 쏘지 않고 직접 말을 몰고 달려 들어서 그 고구려 신궁을 생포하였다.