여 · 수전쟁(麗隋戰爭)과 마찬가지로 전쟁의 근본적인 원인은 통일 중국 세력의 팽창 정책에 있었다.
고구려와 당은 초기에는 우호적 관계를 유지하여, 622년(영류왕 5)에는 여수전쟁 당시의 양측 포로를 상호 교환하기도 하였다. 그러나 당의 세력이 확대되어감에 따라 양국 간에는 점차 긴장이 고조되어갔다.
당은 먼저 수 말기 이래 분열되었던 중국을 통일하고, 북아시아의 유목민 국가인 동돌궐(東突厥)을 제압하였다. 나아가 630년대 후반에는 서북쪽으로 서돌궐과 그 세력 아래에 있던 톈산산맥(天山山脈) 일대의 오아시스 국가들을 공략하였다.
수와 같은 과정을 밟으면서, 당은 자국 중심의 일원적인 국제 질서의 구축, 즉 세계 제패를 추구해 나갔다. 그 다음의 공략 대상이 자연 동북아시아의 고구려가 될 것임은 능히 예견되었다.
이미 631년에 당은 요서지역에 고구려가 수나라와의 전쟁에서 승리한 것을 기념하여 세운 경관(京觀: 승전기념탑)을 헐어버림으로써 고구려를 자극하는 도발적인 자세를 보이기도 하였다.
당시까지는 아직 북방의 유목민 집단들을 완전 제압하지 못한 상황이었으므로, 당이 더 이상의 적극적인 공세를 펼치지는 못하였다. 그러나 당의 팽창 정책은 고구려의 깊은 우려를 불러 일으켰다.
이에 고구려는 오늘날의 농안(農安)지역인 부여성(扶餘城)에서 요동반도 남단에 이르는 천리장성을 쌓아 앞날에 대비하였다. 이 장성 축조의 감독자는 연개소문(淵蓋蘇文)이었다.
640년당이 서역지방의 고창국(高昌國)을 멸망시켰다는 소식이 전해지자 고구려 조정 내에서는 위기의식이 팽배해 졌다. 그러던 와중에 고구려 귀족들 간에는 내분이 일어나, 연개소문 일파가 정변을 일으켜 영류왕 등의 반대파를 제거하고 실권을 장악하였다.
연개소문은 당면한 대내외적 위기 상황을 타개하기 위해 강경한 대외정책을 추진하여, 이미 전쟁이 불가피한 당에 대해 결연한 대결 자세를 취하였다.
한편, 당시 백제와의 전투에서 수세에 몰린 신라는 김춘추(金春秋)를 평양에 보내 고구려와의 관계 개선을 위한 협상을 도모하였다. 서쪽으로 강대한 당제국과의 전쟁을 앞에 둔 상황에서 남쪽의 신라와 우호관계를 맺는 것은 고구려로서도 매우 중요한 것이었다.
그런데도 연개소문은 강경 정책을 고집하여 이를 거부하였다. 이에 고립 위기에 처한 신라는 당에 더 밀착하게 되었다. 이는 뒤에 고구려의 안보에 치명적인 요소가 되었다.
여당간의 긴장은 당이 고구려의 대신라 정책에 대하여 외교적 압력을 가해 오고, 이에 맞서 고구려측이 당의 사신을 구속하면서 극도에 달하였다. 마침내 644년 당군이 고구려에 대한 공격을 개시하면서 양국은 장기간의 전쟁에 돌입하게 되었다.
당 태종은 645년 2월 요동으로 대군을 몰아 침공해 왔다. 요동성(遼東城) · 백암성(白巖城) 등 주요 성들이 함락되었다.
침공군에 대항하는 전략을 둘러싸고 당시 고구려군 수뇌부에서는 두 가지 방책이 제기되었다. 하나는 전통적인 청야수성책(淸野守城策)이었다. 즉, 주요 성들을 지키는 데 주력하여 적군의 진격을 저지하고 적군이 현지에서 식량을 조달하지 못하게 한 뒤, 별동대를 동원해 적의 긴 보급선을 차단하고 산발적인 기습 공격으로 적을 교란시키는 것이다.
그렇게 수비해 나가다가 가을이 다가오면 적군은 추위와 굶주림에 지쳐 퇴각하지 않을 수 없을 것이므로, 그 때 공격하여 승리를 획득한다는 것이다. 이는 노성한 장군들의 주장이었다.
둘째는 요동평원에서 정면으로 대규모 회전을 벌이자는 것이었다. 고구려군 지휘부는 후자를 택하였다. 15만 명의 대병력을 동원한 고구려군은 안시성(安市城) 동남쪽에서 당군과 대회전을 벌였으나 적의 포위망에 빠져 대패하였다. 당군은 이어 안시성으로 몰려들었다. 그러나 안시성은 당군의 공격에 완강히 저항하였다.
안시성에서 한 번 당군의 진격이 저지되자, 고구려군은 재차 전열을 정비하여 전통적인 방어책에 따라 당군을 압박해 나갔다.
한편으로는 돌궐을 대신하여 일시 몽고고원의 패자가 된 설연타에게 사절을 보내어 당의 북부 국경을 공격토록 하였다. 당군의 진격이 지체되고 가을철이 다가오자, 긴 보급선과 후방이 위협을 받고 있던 당군으로서는 전면 퇴각하지 않을 수 없게 되었다.
1차 침공에서 패퇴한 당은 전략을 바꾸어 장기 소모전으로 나갔다. 즉, 단번에 고구려를 공략하기는 어렵다고 판단하여, 소규모 단위의 육군과 해군 부대로 계속 고구려를 기습공격하고 퇴각하는 방책을 취하였다.
고구려로 하여금 제대로 농사를 편안히 지을 수 없게 만들어 지치게 하자는 것이다. 당시 당과 고구려 간에는 인구와 생산력에서 현격한 차이가 있었으므로 장기 소모전은 고구려에 상당한 타격을 주었다.
나아가 당 태종(太宗, 627∼649)에 이은 당 고종(高宗, 650∼683)은 지구전의 교착 상태를 타개하기 위하여 고구려 남부 국경선에 강력한 제2전선을 구축하는 방책을 취하였다.
이는 660년 나당연합군에 의한 백제의 멸망으로 구체화되었다. 백제의 멸망에 따라 이제 신라군은 측면으로부터 위협을 받지 않고 전력을 고구려 공략전에 투입할 수 있게 되었다.
이듬해 661년 소정방(蘇定方)이 이끄는 당군은 바다를 건너 대동강을 타고 올라와 평양성을 포위, 수개월 동안 공격하였다. 이 작전에서 당의 대군은 평양성을 직접 공격하였고, 겨울철까지 공격을 지속하였으며, 무사히 퇴각할 수 있었다.
이는 종전까지의 여당 간 전쟁의 양상과는 다른 면모로, 고구려의 전력 약화를 말해 준다. 동시에 이는 남쪽으로부터 신라의 지원을 받음으로써 당군이 지닌 최대 약점인 식량 등 군수품 보급 문제가 보완되었기에 가능한 작전이었다.
이제 당군은 겨울철 작전까지도 감행할 수 있게 된 것이다. 또한 강력한 신라군의 존재에 대응하기 위해 고구려는 그 방어력을 양분하지 않을 수 없게 되었다. 고구려의 전략적 위치는 급격히 악화되어갔다.
그러한 가운데 665년에 연개소문이 죽자, 곧 이어 그의 아들들 사이에 권력다툼이 벌어졌다. 실각한 남생(男生)은 국내성(國內城)으로 가서 그 아들을 보내 당에 투항하였다. 연개소문의 동생인 연정토(淵淨土)는 12성을 들어 신라에 항복하였다.
이런 내분을 포착하여 당은 대규모 원정군을 보냈고, 남생은 국내성 일대의 병력을 끌고 당군 진영으로 가서 향도(嚮導: 길을 인도하는 역할) 노릇을 하였다.
장기간의 전쟁으로 피폐한 상태에서 이렇듯 최고집권층 내의 분쟁과 반역 행위가 일어나자 고구려의 저항력은 급속히 무너졌다. 요동의 신성(新城)과 부여성이 함락된 데 이어, 마침내 668년 나당연합군에 의해 평양성이 함락되었다. 645년부터 시작된 여당전쟁은 668년 결국 고구려의 멸망으로 종결되었다.