5. 667~668년 당의 공세와 고구려 멸망
5. 667~668년 당의 공세와 고구려 멸망
당과 신라 연합군의 본격적인 고구려 공격은 667년에서 668년에 걸쳐 이루어졌다. 이 전쟁의 주요 전장으로는 667년의 신성전투, 금산전투와 소자하 유역의 전투, 압록강전투, 평양성 공격전, 그리고 668년에 들어서는 부여성전투, 설하수전투, 대행성전투, 욕이성전투, 사천원전, 평양성전투 등이 있다.
1) 667년 당의 공세와 신라의 참전
당 조정에서는 이적을 총사령관으로 하는 고구려 공격군을 꾸렸다. 666년 10월 사공(司空) 영국공(英國公) 이적을 요동도행군대총관으로 삼고 12월에 공격군 편성이 마무리되었다(임기환, 2022b). 학처춘(郝處俊)을 부관으로 하고, 666년에 출정했던 방동선과 글필하력을 요동도행군부대총관 겸 안무대사로 하였으며, 운량사(運糧使)인 두의적(竇義積), 독고경운(獨孤卿雲), 곽대봉(郭待封) 등은 모두 이적의 지휘를 받게 하였다. 또한 군량미를 하북(河北)에 있는 여러 주의 조부(租賦)로 충당하게 하였다(『자치통감』 권201). 독고경운을 압록도(鴨綠道)행군총관으로, 곽대봉을 적리도(積利道)행군총관으로, 유인원(劉仁願)을 필열도(畢列道)행군총관으로, 김대문(金待問)을 해곡도(海谷道)행군총관으로 삼았다(『신당서』고려전).
당군의 행로는 대략 세 경로로 나누어져 있었다. 육군 주력은 이적의 지휘 아래 고구려 신성을 공략하였고, 부장인 학처준이 또 다른 군대를 이끌고 다른 고구려성을 공격하였으며, 곽대봉은 수군을 이끌고 평양으로 향하였다(임기환, 2022b).
먼저 육군 주력인 이적군은 667년 2월 요하를 건너 신성에 이르렀다. 신성은 요서에서 요동으로 가는 세 갈래 길 중 북도의 동쪽 입구에 있어 북으로 부여성(扶餘城)에 이르고, 동북으로는 옛 부여, 즉 지금의 길림(吉林) 지역으로 통하며, 남으로는 요동성으로 연결되며, 동으로는 소자하 유역을 거쳐 국내성으로 나아가는 교통의 길목에 위치한다(노태돈, 2009). 이적은 신성의 중요성을 여러 장수에게 주지시키며 “신성은 고구려의 서쪽 변방 요해지이니 먼저 그곳을 빼앗지 않고는 나머지 성들도 쉽게 함락할 수 없다”고 하였다(『삼국사기』 고구려본기 보장왕26). 당군은 신성 서남쪽으로 군사를 이끌고 가서 산에 의지해 성책을 쌓아 공격도 하고 방어도 하였다.
『자치통감』에서는 9월 14일에 신성이 함락되었다고 한다. 7개월에 걸친 당군의 공격에도 신성은 버텼으나 결국 성 내부에서 투항자가 나오면서 함락되었다. 외부에서 지원받을 수 없이 고립이 심화되면서 고구려 측 병사들이 지쳐갔기 때문에 내부에서 반란이 일어난 것이다(서영교, 2021).
이적의 부장인 학처준은 안시성(安市城)에서 아직 대열을 갖추지 못하였을 때 갑자기 나타난 고구려군 3만을 정예 군사로 패퇴시켰다(『삼국사기』 고구려본기 보장왕26). 『자치통감』에도 유사한 기록이 보이지만 안시성과 3만의 고구려군에 대한 내용은 보이지 않아 안시성이라고 확정하기는 어렵다. 다만 학처준의 군대가 요동의 고구려성을 공략한 것은 신성을 후원하려는 다른 고구려성의 움직임을 차단하여 당군의 신성 공격을 간접적으로 지원하기 위한 전술로 보인다. 따라서 학처준이 공격한 고구려성은 요동 방어의 요충성인 요동성이나 안시성일 것이다(임기환, 2022b).
『자치통감』에 따르면 곽대봉이 거느린 수군은 다른 길로 평양으로 향했다고 한다. 이적은 별장(別將) 풍사본(馮師本)을 파견해 양식과 무기를 싣고 그에게 대주게 했는데, 그의 배가 파손되어 시기를 놓치게 되자 곽대봉의 군대는 굶주리는 상황에 처하게 되었다고 한다. 이때 곽대봉이 이끄는 수군의 경로는 정확히 알 수 없지만 그가 적리도행군총관이라는 점과 평양으로 향하고 있다는 기록을 통해 그의 최종 목적지는 평양성일 가능성이 있다.
『삼국사기』 지리지에는 ‘압록수 이북의 아직 항복하지 않은 11성(未降城)’, ‘압록수 이북의 이미 항복한 11성(已降城)’, ‘압록 이북의 도망한 7성(逃城)’, ‘압록수 이북의 쳐서 얻은 3성(打得城)’으로 기록된 압록수 이북의 현황을 기록한 자료가 있다. 압록수 이북의 고구려성 중에서 아직 항복하지 않은 성에 ‘북부여성주(北扶餘城州), 절성(節城), 풍부성(豊夫城), 신성주(新城州), 도성(桃城), 대두산성(大豆山城), 요동성주(遼東城州), 옥성주(屋城州), 백석성(白石城), 다벌악주(多伐嶽州), 안시성(安市城)’으로 11개의 성이 기록되어 있다. 이 목록의 옥성주는 오골성으로 비정된다(노태돈, 1999). 아직 항복하지 않은 성 목록에 신성이 포함되어 있어 이 목록이 작성된 시간적 하한은 신성이 함락된 667년 9월 이전일 것이다. 또한, 압록강 이북의 쳐서 얻은 성과 도망한 성이 언급된 것으로 볼 때 당군의 공격 이후 상황을 전하는 것으로 볼 수 있다.
또한 압록수 이북의 이미 항복한 성 목록으로는 ‘양암성(椋嵒城), 목저성, 수구성(藪口城), 남소성, 감물주성, 능전곡성(夌田谷城), 심악성(心岳城), 국내주, 설부루성(屑夫婁城), 후악성(朽岳城), 자목성(橴木城)’이 있다. 이미 항복한 성 목록에 국내주가 포함된 것과 연남생이 투항할 때 함께했던 목저성, 남소성, 감물주성 등이 있는 것으로 보아 연남생이 당에 투항한 이후에 작성된 것으로, 이 기록은 이적이 이끄는 당군 본대의 공격이 개시된 667년 2 ~9월 사이에 당군이 작성한 전황표로 볼 수 있다(池內宏, 1960; 노태돈, 1999; 정원주, 2014a; 임기환, 2022b).
이 목록은 총장 2년인 666년 당이 고구려 고지를 안동도호부(安東都護府)로 개편하는 과정에서 작성된 이적의 주청문과 당 고종의 조칙 일부가 기재된 바로 뒤에 나오는 기록이다. 이러한 구성을 근거로 이 목록이 고구려 멸망 이후의 상황을 반영하고 있는 것으로 보기도 한다(김현숙, 2004; 장병진, 2016; 방용철, 2018; 오진석, 2021 등). 이미 항복한 성 목록으로 기록된 북부여성주, 옥성주, 안시성 등은 당 지배 아래 편입과 이탈을 반복했음이 사료에서 확인되므로, 고구려 멸망 이후에도 압록수 이북에 아직 항복하지 않은 성이 다수 존재했을 가능성이 있다(김강훈, 2018).
또한, 이미 항복한 성에 들어있는 남소성, 목저성과 창암성으로 비정되는 양암성은 소자하 유역에 위치한 세 성으로 666년과 667년 두 차례에 걸쳐 당군에게 투항 내지 점령되었는데, 667년 2월에서 9월 사이에는 고구려의 지배하에 있었다고 보아 이를 고구려 멸망 이전으로 볼 수 없다는 것이다. 이 자료는 669년 안동도호부가 압록수 이북 지역을 확보하는 과정을 담고 있는 것으로 보고, 고구려 멸망 이후에 압록수 이북에서 당의 지배에 포섭되지 않은 지역이 다수 존재했다고 추정한 것이다.
이 목록의 작성시기에 대한 논란은 ‘아직 항복하지 않은 성’ 목록에 고구려 요동 방어에 중요한 성들 가운데 일부만이 기재된 이유를 어떻게 해석하느냐에 달려 있다. 또한 이미 항복한 성 목록에 있는 목저성, 남소성, 양암성 등 소자하 유역에 위치한 세 성이 당군의 지배하에 들어간 시기를 언제로 볼 것인가에 따라 달라진다. 무엇보다 이 목록은 작성시기에 따라 이를 활용해 당시의 정황을 추정할 수 있는 자료로서의 가치가 매우 높은 편이다.
이 목록에는 압록 이북의 도망한 7성에 ‘적리성(積利城)’이 포함되어 있는데, 이는 646년 7월에 우진달(于進達)이 이끄는 당의 수군이 석성(石城)을 기습하고 이어서 공격한 성이다. 적리성은 요동반도 남부 해안 부근으로 수군의 공격이 가능한 곳이다. 곽대봉의 행군명으로 보아 그가 거느린 수군은 적리성 일대로 진격했을 것이다(노태돈, 1999; 임기환, 2022b).
이 곽대봉이 이끄는 수군의 문제는 신라군의 북진과 연관되어 있다. 667년 7월 7일 당 고종은 칙명을 내려 문무왕의 동생인 지경(智鏡)과 개원(愷元)을 장군으로 삼아 요동 전쟁에 나아가게 하였다. 대아찬 일원(日原)을 운마장군(雲麾將軍)으로 삼으라는 칙명을 궁정에서 받도록 하였다. 또한 당 고종은 유인원과 김인태(金仁泰)에게 명하여 비열도를 경유하게 하고 신라군을 징발해 다곡(多谷)과 해곡(海谷) 두 길을 따라 평양으로 모이게 하였다(『삼국사기』신라본기 문무왕7).
비열도는 비열홀을 경유해 동해안을 따라 평양으로 가는 교통로이며, 다곡도는 대곡(大谷)을 경유하는 교통로로, 해곡도는 수곡성(水谷城)을 경유해 평양으로 가는 교통로로 추정되고 있다(池內宏, 1960). 그런데 해곡이란 지명은 『삼국사기』 고구려본기 서천왕19년조에 동해안 일대의 지방관으로 볼 수 있는 ‘해곡태수’와의 연관성과 고을덕묘지명에서 고을덕의 아버지가 역임했던 ‘해곡부도독’의 사례를 들어 지리적 위치나 지방행정단위의 위계로 보아 해곡을 수곡으로 비정하기 어렵다는 견해(葛繼勇·이유표, 2015)가 있어 해곡도가 수곡성을 경유한다고 볼 수 있는지 의문이다.
『신당서』 고려전에 유인원은 필열도(畢列道)행군총관으로, 김대문(金待問)은 해곡도행군총관으로 삼았다는 기록이 보인다. 필열도는 비열도와 동일한 지명이며, 김대문은 김인문(金仁問)의 오식으로 볼 수 있다(임기환, 2023). 지경과 개원은 실제 당의 공격군에 참여했는지 확인되지 않는다. 이 둘은 해곡도총관인 김인문 아래에 소속되었다고 보거나(임기환, 2023), 기록 그대로 요동전선으로 파견되었다고 보기도 한다(노태돈, 2009). 김인태와 일원은 660년 백제 멸망 뒤 유인원과 함께 사비성을 지킨(『삼국사기』 신라본기 문무왕1) 인연으로 보아, 일원은 유인원 휘하의 운마장군으로 임명되었을 가능성이 있다(임기환, 2023).
다음 달인 8월에 문무왕은 대각간(大角干) 김유신 등 30명의 장군으로 구성된 대규모 군대를 편성해 수도 경주를 출발하였다. 9월에는 한성정(漢城停)에 도착해 이적의 연락을 기다렸다. 그리고 10월 2일에 이적이 평양성 북쪽으로 200리 되는 곳에 도착해 이동혜촌주(尒同兮村主) 대나마(大奈麻) 강심(江深)을 보냈다. 강심은 거란 기병 80여 명을 이끌고 아진함성(阿珍含城)을 거쳐 한성에 이르러 서신을 전하여 군사 동원 기일을 독려하였다.
문무왕이 이끄는 신라군은 북진하여 11월 11일에 장새(獐塞: 현 황해도 수안)에 이르렀는데, 이적이 돌아갔다고 하자 다시 군대를 돌려 돌아갔다(『삼국사기』 신라본기 문무왕7). 「답설인귀서」에는 문무왕이 이끄는 신라군의 행렬이 수곡성에 이르렀을 때 당군이 이미 돌아갔다는 말을 듣고 회군한 것으로 기록되어 있다. 수곡성은 지금의 황해도 신계로 비정(정구복 외, 1997)되는데, 장새보다 남쪽에 위치한다.
강심과 거란 기병 80여 명이 문무왕이 있는 한성까지 이동하였을 경로에 있는 아진함성을 강원도 안협(현 북한 철원군 철원면) 일대로 비정하면서, 국내성에서 출발해 개마고원을 넘어 함흥과 안변을 거쳐 추가령구조곡을 따라 평강, 철원을 거쳐 한성으로 이동했다고 보는 견해(임기환, 2023)가 있다. 그러나 기록에는 이적이 평양성 북쪽으로 200리 되는 곳에서 강심 등을 파견했기 때문에 국내성에서 개마고원을 넘는 경로는 제고될 필요가 있다. 평양성 북쪽 200리가 아닌 압록강에서 출발한다고 해도 마찬가지일 것이다. 661년과 668년 고구려 공격 때와 달리 667년에는 문무왕에게 보내는 신라군의 출정을 요구하는 당 고종의 칙령이 기록에 보이지 않으므로 비공식적으로 유인원을 통해 간접적으로 신라군을 동원하였던 것으로 보는 견해(임기환, 2023)가 있다. 당이 신라군의 참전 범위를 최소화하려 했다고 보는 것이다.
한성정에서 문무왕이 이적의 연락을 기다리고 있을 무렵인 9월 14일에 이적이 이끄는 당군이 신성을 함락하였다. 이적은 함락한 신성을 글필하력에게 지키게 하고 군사를 이끌고 진격하여 16개의 성을 모두 함락하였다(『자치통감』 권201). 이 16개 성이 어디인지에 대한 기록도 보이지 않지만 이후 당군의 향방을 알 수 있는 자료도 매우 단편적이다. 이때 이적군의 행로에 대해 신성에서 출발해 요동성-오골성(烏骨城)-대행성(大行城) 경로로 이동했다고 보는 견해(노태돈, 1999)가 있다.
요충성인 요동성과 압록강 이북에서 최대의 성인 오골성은 앞에서 언급한 ‘압록강 이북에서 항복하지 않은 성’에 포함되어 있다. 9월 14일에 출발한 이적군이 보름 만에 두 성을 포함한 16개 성을 장악하고 10월 2일 압록강에 이르기는 어렵다고 보는 견해(임기환, 2022b)가 제기되었다. 또한, 신성 못지 않은 요동성이나 오골성 함락이 기록에 전하지 않을 리 없으므로, 신성에서 이미 글필하력군에 의해 공략된 목저성 등의 소자하 경로를 거쳐 본계(本溪)에서 단동(丹東)으로 이어지는 경로, 혹은 환인(桓仁)에서 단동으로 이어지는 경로를 택했을 것으로 보는 것이다.
앞의 『구당서』 글필하력열전에 의하면 글필하력은 남소성과 이어진 7개의 성을 함락하고 압록수에서 이적이 이끄는 당군과 합류했다고 하였다. 이에 따라 글필하력도 이때 신성 방어를 방동선과 고간에게 맡기고(池內宏, 1960) 국내성 방면으로 향해 가다 환인 방면에서 오골성-대행성으로 나아가 이적군과 결합한 것으로 보았다(노태돈, 2009). 반면, 글필하력이 압록수로 간 시기는 668년으로, 667년에는 설인귀 등의 당군과 빼앗긴 신성을 재탈환하려는 고구려군의 공격에 치열한 전투를 벌인 것으로 보기도 한다(이민수, 2018).
이적은 압록강 방어선을 지나 10월 2일에 평양성 200리 지점에 도달하였다가 11월 초에 평양성 일대에서 퇴각하였다(노태돈, 2009; 이민수, 2018; 서영교, 2021). 이때 이적군이 도착한 평양성 북쪽 200리 지점을 청천강 이남의 안주성 일대로 비정하는 견해(이상훈, 2020)가 있지만, 압록강을 도하하지 못한 것으로 보는 견해(임기환, 2022b)도 제기되었다. 이적 휘하에 있는 통사사인(通事舍人) 원만경(元萬頃)은 격고려문(檄高麗文)을 지어 “압록강의 험한 곳을 지킬 줄 모른다”라고 조롱하였는데, 남건이 이를 듣고 바로 군사를 옮겨 압록진을 점거하자 당군이 건널 수가 없었다. 이에 당 고종은 그를 영남으로 유배보냈다(『자치통감』권201). 이러한 정황으로 미루어 당시 당군이 압록강 방어선을 돌파하지 못했다는 것이다.
한편, 비열도로 진격하던 유인원 역시 연진(延津) 등 7성을 함락시키며 북진하였으나 이적의 병마가 돌아갔다는 말을 들었다고 하였다. 그리고 이적과 합류하는 기일을 어겼다는 죄로 요주(姚州)로 유배되었다(『책부원구』 장수부 위약). 『자치통감』에 유인원의 유배가 668년 8월 12일에 기록되어 있어 유인원이 군기에 늦은 시점은 667년의 일로 볼 수 있으며, 신라군과 마찬가지로 이적이 보낸 강심을 통해 평양성 공격 기일을 전해 들었을 것이다(임기환, 2023). 반면, 이 사건을 통해 668년에 이적 군대가 6월 29일 직전에 평양성으로 진군하였다가 후퇴한 것으로 파악하기도 한다(서영교, 2022a).
이적이 서신으로 ‘평양성 북쪽 200리’ 지점에 도달했다고 한 것은 거짓으로, 압록강전선의 고구려 전투력을 분산시키기 위해 신라군의 북진을 재촉하기 위한 전술적 목표를 가정한 것으로 보는 견해(임기환, 2022b)가 있다. 한편, 평양 200리 지점까지 왔다가 철수한 당의 장군은 이적이 아니라 해상으로 파견된 곽대봉으로 보는 견해(池內宏, 1960)가 있다. 그러나 곽대봉이 이끄는 수군은 평양으로 향했으며, 이적군이 평양 북쪽 200리까지 남하해서 신라군을 북상시킨 것은 대동강 기슭에 고립되어 있는 곽대봉이 이끄는 수군을 구출하기 위한 것으로 보기도 한다(서영교, 2021).
667년 당군은 평양 진공이 실패한 뒤 본국으로 돌아가지 않고 고구려에서 월동하였다. 당군은 본토와 연락이 용이한 요동의 신성과 요동성 일대로 전선을 축소하고, 국내성 일대의 연남생군과 연결하여 방어에 임하면서 월동한 것으로 보인다(노태돈, 2009).
2) 668년 나당연합군의 공세와 평양성 함락
당 고종은 668년 2월, 요동에 지도군량사(支度軍糧使)로 파견된 시어사(侍御史) 가언충(賈言忠)이 귀국하자 그에게 군대의 일을 물었다. 가언충은 세 가지 이유를 들어 고구려가 반드시 평정될 것이라 하였다. 우선, 고구려에서 남생 형제들의 내전으로 혼란한 상태에서 남생이 당의 향도 역할까지 함으로써 틈이 생겼다고 하였다. 둘째로 기근과 요이한 일로 고구려인들의 민심이 혼란하다는 점, 셋째로 고구려에 파견된 장수들이 충성스럽고 용감하다는 점을 들고 있다(『자치통감』 권201). 이러한 가언충의 말은 당의 승리를 확정하는 당 내 분위기를 보여주는 것으로 해석하였다. 반면에, 전해에 당군이 압록강 유역에서 정체됨으로 인해 전쟁이 장기화될 것을 우려하는 당 고종을 안심시키고자 하는 충언으로 해석하기도 한다(정원주, 2023).
당은 1월에 우상(右相) 유인궤(劉仁軌)를 요동도부대총관으로 삼아 전쟁에 투입하였다(『자치통감』 권201). 2월부터 본격적인 고구려 공격에 나섰는데, 첫 공략 대상은 부여성이었다. 2월 6일에 이적 등이 고구려의 부여성을 함락했다. 설인귀가 3,000명을 거느리고 선봉이 되어서 부여성을 함락했는데, 이때 죽거나 사로잡은 고구려군이 만여 명이었다. 또한 부여천(川)에 있는 40여 개의 성이 모두 당군에게 항복하였다(『자치통감』 권201). 『책부원구』에서는 부여주(州) 40여 성이라 하였다. 당은 이 작전으로 요서의 연군(燕郡)-통정진(通定鎭)-신성으로 이어지는 당군의 주된 보급선을 북에서 위협할 수 있는 고구려 세력을 제거할 수 있었다(노태돈, 2009).
이 부여성의 위치에 대해서는 요령성 서풍(西豐) 성자산산성(城子山山城)이라는 설(梁振晶, 1994), 장춘(長春) 농안(農安) 지역의 북부여성으로 파악하는 설(노태돈, 2009), 천리장성의 출발지로 보아 동요하 상류의 서풍이나 요원(遼源) 일대로 보는 설(임기환, 2022b) 등이 있다. 당군이 부여성을 함락한 것은 고구려의 후방기지를 공략하여 배후의 위협을 제거하기 위한 목적이었을 것이다(김복순, 1986). 한편, 북방의 여러 종족이 고구려를 중심으로 단합하는 것을 막고 후방에서의 안전을 확보하기 위한 것으로 보는 견해(김용만, 2003)와 송화강(부여성) 유역 일대를 점거함으로써 왕도 공위전의 성공 가능성을 담보하기 위한 것으로 보고, 이 지역이 갖는 전략적 가치를 연남생이 당에게 제보한 것으로 보는 견해(박경철, 2007)도 제기되었다.
『자치통감』에 의하면 부여성을 구원하기 위해 남건은 군사 5만 명을 보냈는데, 설하수(薛賀水)에서 이적이 이끄는 당군과 접전하여 패했으며, 이때 죽은 고구려 병사가 3만여 명이나 되었다고 한다. 당시 평양에서 부여성으로 가려면 요동 방면이나 국내성 일대를 거치기 어렵기 때문에(김강훈, 2022) 고구려의 구원군 5만 명은 평양성에서 동해안을 북상하는 평양성-간성(干城: 현 함흥)-북청-책성(현 혼춘)-연길(延吉)-돈화(敦化)-부여성의 책성 경로(박경철, 1992)로 간 것으로 보기도 한다(이민수, 2018).
이 설하수의 위치에 대해서는 부여성에서 멀지 않은 곳으로 보는 견해(松田等, 1913)가 있는데, 부여성을 함경도 함흥으로 비정하여 설하수를 성천강(城川江)으로 보기도 한다(池內宏, 1960). 한편 청대 고증학자들이 편찬한 『대청일통지(大清一統志)』 권421 설하수조를 참조해 현재 요령성 봉성시를 경유하는 난하(灤河)라는 견해(서영교, 2022a)도 제기되었다. 한편, 압록강전선을 방어하기 위해 필요한 요충성인 오골성을 확보하기 위한 전투로 보고, 설하수를 오골성 동쪽을 흐르는 애하(靉河) 혹은 오골성 북쪽의 초하(草河)로 비정(임기환, 2022b)하기도 한다.
설하수전투에서 승리한 이적이 이끄는 당군은 이어 대행성을 함락하고 다른 길로 나아갔던 군사들이 모두 이적과 만나서 압록책에 이르렀다(『자치통감』 권201). 이 대행성의 위치는 압록강 하구에 있던 박작성(泊灼城) 인근으로 추정한다(노태돈, 2009). 선박이 압록강을 100리까지 거슬러 올라가다가 더 올라가려면 작은 배를 갈아타야 하는데, 그 지점에 대행성이 있는 것으로 보고 있다(池內宏, 1960; 서영교, 2021).
2월 한 달 동안에 당군은 부여성 일대를 장악하여 후방을 든든하게 하고, 구원에 나선 5만의 고구려군을 설하수에서 격파하고 대행성 등 압록강 북안을 장악했다. 이제 압록강을 도강해 평양으로 진격할 일만 남았다. 글필하력의 군대도 국내성을 거쳐 연남생군과 함께 압록강 하구에 이르러 이적의 군대와 합류하였다. 부여성을 공격했던 설인귀 부대도 곧바로 압록강전선으로 이동했다. 이때가 늦어도 3월 초중순 무렵이었을 것이다(임기환, 2023).
당군이 압록책에서 고구려군의 저항을 물리치고 압록강 방어선을 돌파한 시점은 기록에 보이지 않는다. 9월에 평양성이 함락되는 것으로 보아 이곳에서 전선이 한동안 소강상태에 있었을 것이다. 당군이 압록책을 돌파한 뒤 200여 리 거리의 욕이성(辱夷城)을 함락시키고 평양성에 도착하는 시일을 최대 한 달여로 계산하면서, 압록강 방어선을 돌파하는 시점을 6월 말 무렵으로 추정하기도 한다(임기환, 2022b).
욕이성의 위치는 압록책에서 남쪽으로 200여 리 떨어진 것으로 보아 안주(安州) 일대(池內宏, 1960)나 청천강 북쪽(이병도, 1996)으로 추정하는데, 이를 좀 더 구체화해 안주성(이상훈, 2018b)으로 비정하였다. 안주성은 안주읍 동쪽 가두산을 배경으로 하고 청천강을 자연 해자로 하여 안주읍내를 둘러막은 평산성으로, 고구려시기부터 청천강 일대를 수비하는 서북지역 중심성의 하나였다. 북쪽으로 의주를 거쳐 요동으로 통하고, 동쪽으로 함경남도와 강원도로, 남쪽으로 평양으로, 서쪽으로 청천강을 따라 서해로 통한다(서일범, 1999).
『삼국사기』 신라본기에 따르면 6월 12일 요동도안무부대사 요동행군부대총관 겸 웅진도안무대사 행군총관 유인궤가 당 황제의 칙명을 받들고 당항진(黨項津)에 도착하였다. 신라 문무왕과 군사 동원 기일을 약속하고 유인궤는 천강(泉岡)으로 향했다. 6월 21일에 대각간 김유신을 대당대총관(大幢大摠管)으로 하는 여러 행군을 꾸렸다. 22일에 김인문, 천존(天存), 도유(都儒) 등은 일선주 등 7개 군 및 한성주의 병마를 이끌고 당 군영으로 출발했다.
이때, 동원된 신라군에 대해서 『삼국사기』 김인문열전에는 20만이라고 한다. 신라군의 총출정부대는 10개 군단에 병으로 수도에 남은 김유신을 제외한 28명의 장수가 참전하였으므로, 동원된 병력은 약 5만여 명이었을 것으로 추산하기도 한다(이상훈, 2018a). 「답설인귀서」에는 신라에서 대감 김보가(金寶嘉)를 보내 바닷길로 들어가 이적의 명을 받아오게 하였으며, 유인궤는 5월에 와서 신라의 군사를 징발해 평양으로 갔다고 하였다.
6월 22일에 먼저 출발한 김인문 등은 그달 29일에 이적을 만나 영류산(嬰留山) 아래까지 진군하였다고 한다. 신라군 선발대에는 장수 3명이 편성되었으므로 이들이 인솔하는 병력 수는 약 5,000명 내외로 추정되고 있다(이상훈, 2012a). 이 영류산에 대해 『삼국사기』 신라본기에서는 주를 달아 “지금 서경의 북쪽 20리에 있다”고 한 반면, 지리지에는 ‘삼국유명미상지분(三國有名未詳地分)’으로 분류해 위치를 알 수 없다고 기록하였다. 이 영류산은 대성산(大城山)으로 비정(池內宏, 1960)되고 있는데, 평양 인근의 교통로와 지형을 감안해 평양 북쪽에 위치한 봉수산(烽燧山) 일대로 비정하는 견해(이상훈, 2020)가 새롭게 제기되었다.
이 선발대는 평양까지 진격해 이적군과 합류한 것으로 보인다(김병곤, 2013b). 경주에서 출발한 선발대가 7일 만에 이적군과 조우했다고 보기 어려우므로 그들의 이동시간을 2~3주로 보는 견해(이상훈, 2018b)와 선발대가 경주가 아닌 한성에서 출발했을 것으로 보는 견해(임기환, 2023)가 있다.
선발대의 이동이 수로를 통해 이루어졌다고 보는 견해에 따르면, 당항성에서 배를 타고 곧장 평양으로 이동했다고 보는 견해(서영교, 2022a)와 약 100척 규모의 선박에 승선하여 청천강 하구에 도착하여 이적군이 주둔하고 있던 욕이성에서 합류한 것으로 보는 견해(이상훈, 2018b)가 있다. 한편, 육로로 이동했다고 보는 경우에는 천강에 주둔해 있던 유인궤가 이끄는 웅진부 당군과 합류해 이미 확보한 한성(현 재령)을 경유하는 재령로 혹은 대곡성(현 평산)을 경유하는 자비령로를 이용한 것으로 보고 있다(임기환, 2023). 이 선발대가 첨병 역할과 전투 공병 역할을 수행한 것으로 파악하기도 한다(이상훈, 2018b).
문무왕은 6월 27일에 경주를 출발하였고 29일에 여러 도의 총관들이 출발하였다. 7월 16일에 문무왕은 한성주에 행차하여 여러 총관들에게 평양으로 진군해 당군과 합류하도록 명령을 내렸다. 비열주행군총관 문영 등은 사천벌판(蛇川之原)에서 고구려 병사를 만나 싸워 크게 무찔렀다(『삼국사기』 신라본기 문무왕8). 문무왕이 「답설인귀서」에서 이 전투에서의 승리에 신라군의 역할을 강조할 정도로 평양성전투의 변곡점이 되었던 전투였을 것이다(임기환, 2023).
사천벌판에서의 전투에 대해 「답설인귀서」에서는 ‘사수전(蛇水戰)’으로, 고구려 멸망 후 10월 22일에 문무왕이 군공을 포상할 때는 ‘사천전(蛇川戰)’으로 기록되어 있다. 이에 비열주행군총관 문영 등이 고구려 병사와 싸운 사천벌판을 662년 방효태부대가 전멸당한 ‘사수전투’가 벌어진 곳과 동일한 장소로 보고 평양성과 대성산성 사이에 남북으로 흐르는 합장강으로 비정하거나 보통강으로 비정한다. 반면에 사천벌판에서 고구려병을 만나 벌어진 전투는 662년의 사수전투와는 다른 지역에서 발생한 전투로 보아야 한다는 견해(김병곤, 2013b)가 제기되었다. 사천벌판은 하천과 평야가 연속되는 지리적 특징을 가진 곳으로 황해도 재령의 서흥강 중하류에서 사리원 일대까지의 강과 평야가 연속된 지역으로 비정하는 것이다.
당군의 평양성 공격시점은 대략 7월 말에서 8월 초 무렵으로 볼 수 있다(임기환, 2022b). 평양성을 둘러싸고 당군과 신라군의 거센 공격에도 평양성 함락은 쉽게 이루어지지 않았다. 평양성은 삼면이 대동강과 보통강을 해자로 둘러싸고 있으며 내성과 중성, 외성까지 갖춘 방어에 있어 견고한 성이었다(김희선, 2006). 평양성은 행정적인 도성이자 군사적 요새로 방어적인 면에서 외성이 무너지면 중성, 내성으로 방어선이 옮겨지며 최후로 북성에서 전투를 벌일 수 있도록 겹겹으로 축조하였다. 왕성을 산성과 복합시켜 군사적으로 요새화한 점은 수·당과의 전쟁을 효과적으로 수행할 수 있게 하였다(민덕식, 2003). 그러나 글필하력이 이끄는 당군만 50만 명이 넘었으며, 뒤이어 이적의 군대가 합류했고 신라군까지 합류하였다.
이적이 이끄는 당군이 평양을 포위하고 한 달여 만에 보장왕이 연남산을 파견하여 수령 98명을 인솔하고 백기를 들고 와서 항복하였다. 남건은 성문을 막고 지키며 자주 군사를 파견하여 싸웠지만 모두 패배하였다. 남건이 군사를 위임한 승려인 신성이 비밀리에 사람을 이적에게 보내 안에서 호응하겠다고 청하였다. 5일 후에 신성이 문을 열어 주어 당군이 성에 들어오자 남건이 칼로 자결하려 했으나 죽지 않고 사로잡혔다(『자치통감』권201).
이 기록은 668년 9월 12일 기사에 실려 있다. 반면에 『삼국사기』 신라본기에는 9월 27일 기사에 신라군과 당군이 합류하여 평양성을 포위하자 보장왕이 남산을 보내 항복을 청하였으며, 이에 이적이 보장왕과 대신 등 20여만 명을 이끌고 당으로 돌아갔다는 내용이 실려 있다. 『책부원구』에는 8월에 보장왕과 남산을 비롯한 수령 98명을 보내 항복했다고 하며 남건만이 성문을 닫고 지키자 9월에 신성과 내응해 평양성문을 열고 함락했다고 하였다(『책부원구』 제왕부 공업). 이처럼 보장왕의 항복 날짜와 평양성의 함락 날짜에 대해 기록마다 조금씩 달라 혼선을 빚고 있다. 일반적으로 『자치통감』 기록을 중시해 9월 12일 보장왕이 항복하고 5일 뒤인 17일에 평양성을 함락한 것으로 보고 있다.
신라군과 당군이 합류하여 평양성을 포위, 공격하면서 벌어진 전투 상황에 대한 자세한 기록은 없다. 다만 평양성 함락 후 문무왕이 한성으로 회군한 뒤 10월 22일에 전공에 따른 포상에 대한 기록에서 평양전투의 일면을 엿볼 수 있다. 각 전투에서의 전공과 그에 따른 포상을 기록하였는데, 전투 지점은 사천, 평양성내, 평양성 대문(大門), 평양군영, 평양성 북문, 평양 남교(南橋), 평양 소성(少城) 등이다(임기환, 2023).
「답설인귀서」에 보면 이적이 신라의 용맹한 기병 500명을 뽑아 먼저 성안으로 들어가게 했다고 한다. 『책부원구』에 의하면 신라군이 길을 열자 당군이 들어가 성 위에 올라 성문루(城門樓) 사면에 불을 질렀는데 성을 태우는 데 네 달이나 걸렸다고 한다. 이러한 기록으로 보아 668년 평양성 공격에서 신라군이 평양성의 거의 모든 지역에서 전투를 벌였으며 평양성 함락에도 먼저 투입되어 적극적으로 전쟁에 임했음을 알 수 있다. 그러나 전쟁이 끝난 뒤에 당에서 전공을 포상할 때 이적은 전에 신라군이 군대 동원 기일을 어겼다며 신라의 전공을 깎고자 하였다(『삼국사기』신라본기 문무왕11).
평양성이 함락되면서 고구려는 멸망하였다. 보장왕과 왕자인 복남, 덕남(德男), 대신 등 20여만 명이 포로로 당으로 끌려갔다(『삼국사기』 신라본기 문무왕8). 당 고종의 명령으로 먼저 소릉(昭陵)에 바쳐지고 당의 수도로 들어가서는 대묘(大廟)에 바쳐졌다. 그리고 12월 7일에 당 고종은 함원전(含元殿)에서 포로를 받는 최종 의례를 하였다. 고구려인들은 당에서 부여한 죄과에 따라 공과 벌을 받는 치욕을 겪게 된다. 보장왕에게는 왕의 정사는 자신이 행한 것이 아니므로 용서하고 사평태상백(司平太常伯) 원외동정(員外同正)의 벼슬을 내렸다. 연남산은 사재소경(司宰少卿)으로, 평양성문을 열어준 신성은 은청광록대부(銀靑光祿大夫)로, 연남생은 우위대장군(右衛大將軍)으로 삼았다. 반면에 끝까지 항거했던 연남건은 검주(黔州)로 귀양보냈다. 또한 이적을 비롯한 전쟁에 참여한 당군에게는 전공에 따라 차등 있게 관직과 상을 내렸다.
고구려의 옛 땅은 5부 176성 69만여 호를 나누어 9도독부 42주 100현으로 하고, 평양에 안동도호부를 두어 통치하였으며, 고구려 장수 중에 공이 있는 자들을 뽑아 도독, 자사, 현령으로 삼아 중국인(華人)들과 함께 정치에 참여하게 하였다. 또한 우위대장군 설인귀를 검교안동도호(檢校安東都護)로 삼아 군사 2만 명을 거느리고 진무하게 하였다(『삼국사기』고구려본기 보장왕27; 『자치통감』권201).
