당나라가 들어서자 고구려는 침략에 대비해 서쪽 국경을 따라 천리장성을 쌓았다(631~647). 642년 장성 공사를 감독하던 연개소문은 정변을 일으켜 영류왕과 반대파 귀족을 죽이고 보장왕을 세운 뒤 스스로 최고 권력을 쥐고 당에 강경하게 맞섰다.
645년 당 태종은 직접 대군을 이끌고 쳐들어와 요동성·백암성 등을 차례로 함락했다. 그러나 안시성에서는 성주와 백성들이 두 달 넘게 버텼다. 당군은 성 옆에 흙산을 쌓아 공격했지만 오히려 고구려군에게 빼앗겼고, 추위가 다가오자 결국 물러났다.
당은 이후에도 여러 차례 고구려를 공격했지만 큰 성과를 내지 못했다. 혼자 힘으로 고구려를 무너뜨리기 어렵다고 느낀 당은 한반도 남쪽의 신라와 손잡을 길을 찾게 되었다.