4월29일, 마침내 고구려의 요동 최대의 성, 요동성으로 당의 이도종이 이끄는 요동도행군의 선발 기병부대가 도달하였다. 요동성은 과거 고구려가 점령하기 전 중국의 한나라 시절부터 삼국시대 공손씨의 지배를 받을 때는 양평성으로 불리었었고 예전 사마의가 함락시키고 공손연을 참수했던 그 성이다. 이때 당태종 이세민이 직접 이끄는 주력 친정군은 요하의 늪 지대에 이르렀는데, 진흙이 2백여 리나 펼쳐져 있어 사람과 말이 통과할 수 없었다.장작 대장 염 입덕이 흙을 퍼부어 다리를 만들었다. 이에 따라 군사들이 행군을 멈추지 않고 늪 지대 동쪽으로 통과하였다. 요동성은 다른성보다 많은 군사(10여만으로 추정)가 주둔하였으나 평지성이며 둘래가 40km가 넘는 대성이었다.

한편 급박한 상황 속에 고구려는 신성과 국내성의 보병과 기병 4만 명을 긴급히 보내 요동성을 구원하려 하였다. 이때 고구려 4만군의 지휘관은 미상이다. 5월8일, 고구려의 4만 구원군은 요동성에 도착하였고, 당의 이세적이 이끄는 요동도행군의 선봉 이도종이 이끄는 요동도행군의 선발 기병부대와 요동성 앞에서 마주치게 되어 교전을 시작한다. 고구려 4만 구원군을 맞아 당의 이도종은 4천 명의 기병으로 이에 대항하려 하였으나 너무 적었다. 그리하여 당군의 군사들은 모두 병력의 차이가 현격하다 하여, 도랑을 깊이 파고 보루를 높이 쌓으며 왕이 올 때까지 기다리는 것이 좋겠다고 말하였다. 하지만 이도종이 말했다. "고구려는 군사가 많음을 믿고 우리를 경시하고 있으나, 그들은 멀리서 왔기 때문에 피곤한 상태이므로 공격하면 반드시 이길 수 있다. 이렇게 하여 길을 깨끗이 닦아놓고 왕을 기다리는 것이 마땅할 것이다. 어찌하여 왕 앞에 적을 넘겨 드리려 하는가?" 도위 마문거가 말했다. "강한 적을 만나지 않고서야 어떻게 장사의 능력을 드러내겠느냐?" 이도종은 말을 마치자, 말을 채찍질하여 달려가 공격하였다. 이도종이 용맹히 돌진하여 가는 곳마다 고구려 군사가 쓰러졌다. 이에 당나라 군사들의 마음이 약간 안정되었다.

하지만 본격적인 전투가 시작되고 고구려의 대군이 전열을 가다듬고 반격하자 숫적으로 열세를 보이던 당군은 패주하게 된다. 행군 총관 장군예가 퇴주하고 당 나라 군사가 크게 패배하였다. 이도종은 흩어진 군사를 수습하여 높은 곳에 올라섰다. 그는 고구려 군대의 진영이 혼란스러운 것을 보고, 다시 기병 수천 명을 이끌어 돌격해왔다. 하지만 이 때 이세적이 이끄는 요동도행군의 군대가 도착하여 고구려 군을 협공하였다. 이리하여 고구려 군사가 크게 패배하여 물러나니, 사망자가 1천여 명이었다.
요동도행군의 선발 기병부대 숫자는?
4천 명