이번 전쟁에서 방어를 하게 된 후촉도 송군의 동향을 살핀 후 곧 닥치게 될 치열한 전쟁에서 필승을 다짐하는 군신들의 열의가 하늘을 찔렀다.
맹창은 송군이 북쪽에서 남하해 온다는 소식을 듣고 왕소원을 주장으로, 조숭도(趙崇韜)를 도감(都監)으로, 한보정(韓保正)을 초토사(招討使)로 임명하여 군사를 이끌고 적극 저항하도록 했다. 재상 이호가 베푼 전송연회에서 후촉의 주장인 왕소원은 상당히 가벼운 어조로 장담했다.
「이번 출정이 어찌 송군을 물리치는 것으로만 끝나겠습니까? 나는 3만 명의 죽음을 두려워하지 않는 용감한 군사를 이끌고 중원을 가볍게 쓸어버릴 것이오!」
964년(태조5) 12월 19일, 봉주(鳳州)에서 후촉으로 진군한 송나라의 북로군은 건거도(乾渠渡), 만인(萬仞), 연자채(燕子寨) 등 후촉군 거점을 공략하고 군량 40여만 석을 노획했다.
후촉의 흥주자사(興州刺史) 남사관(藍思綰)이 서현(西縣)으로 후퇴했고, 송군은 전쟁을 개시하자마자 승전보를 전했다. 흥주(興州)가 송군에게 함락되었다는 소식을 들은 후촉의 초토사 한보정은 산남(山南)을 포기하고 서현으로 후퇴했다.
사연덕은 송군의 선두부대를 이끌고 서현으로 한보정을 추격했다. 이에 겁이 난 한보정은 감히 출전하지 못하고 수만 명의 병사를 동원해 산과 성을 의지하여 진영을 고수했다. 사연덕의 대군이 맹공을 퍼붓자 얼마 안되어 후촉군은 무너지고 한보정은 생포되었다.
이 전투에서 또 후촉의 군량 30여만 석을 노획했다. 승세를 타고 계속 추격한 송군은 또 삼천(三泉)과 가주(嘉州)에서 후촉 퇴잔병을 사살하고 생포했다.
송군이 곧 방어선을 뚫고 후촉의 내지로 돌진하자 막을 방법이 없게 된 후촉왕 맹창은 잔도에 불을 지르도록 명하고 가명관(葭萌關)으로 후퇴했다.
송나라 대군이 출정하기 전에 조광윤이 얻은 정보에 의하면 후촉군은 기주(蘷州)에 부교를 설치해 장강을 봉쇄하고, 부교 주위에는 방어설비로서 울짱 세 겹을 둘러놓았으며 장강 양안에는 대포를 포진했다.
조광윤은 지도를 꺼내들고 동로군주장 유광의에게 말했다.
「물을 거슬러 기주에 도착하면 절대로 함대를 동원해 공격하지 말라. 잠복해 있던 선발 기마병이 공격을 하고 방어선이 어느 정도 무너지면 그때 함대를 출격시켜 협공하면 반드시 물리칠 수 있을 것이다.」
군사행동이 개시된 후 장강 삼협(三峽)에 당도한 유광의는 조광윤의 계책대로 부교에서 30리 떨어진 곳에 함대를 정박시켰다.
그리고 기마보병을 파병해 부교까지 잠행하여 양안의 산 위에 배치한 대포를 파손하고 부교 주위에 설치한 울짱을 파괴하도록 했다.
그 다음 대군이 수로, 육로를 통해 함께 진군하여 연달아 후촉의 송목(松木), 삼회(三會), 무산(巫山) 등 거점을 격파시켰다.
이 전투에서 송군은 후촉군 5천여 명을 섬멸하고, 후촉의 전도도지휘사(戰棹都指揮使) 원덕홍(袁德弘) 등 1,300여명을 생포했으며, 200여척의 함대를 노획하고, 또 수군 6천여 명을 사살 또는 생포했다.
기주성을 공략한 송군은 백제성(白帝城)의 서쪽에 주둔했다.
후촉의 기주를 관할하고 있는 영강(寧江)절도사 고언주(高彦儔)는 병법을 익히 잘 알고 있었다.
송나라 동로대군의 공격을 앞두고 그는 대수롭지 않게 말했다.
「험하고 먼 길을 달려온 송군에게 유리한 것은 속전속결이네. 우리는 철통같은 수비로 맞설 걸세.」
감군(監軍) 무수겸(武守謙)은 고언주의 이러한 방어전술에 동의하지 않고 성 밑의 송군을 공격하자고 주장했다.
12월 26일, 무수겸은 단독으로 1천여 명의 장병을 이끌고 성 밖으로 나와 송군에 공격을 퍼부었다.
이에 송군 주장 유광의는 마군도지휘사 장정한(張廷翰)에게 저두포(猪頭鋪)로 가서 교전하도록 했는데 무수겸은 참패를 당하고 말았다.
승세를 탄 장정한은 기주성을 공격했고 고언주는 사력을 다해 싸웠으나 여러 군데 부상을 입고 장수들은 뿔뿔이 도망치고 말았다.
고언주는 성루에 올라가 분신자살했다. 그의 충성심을 높이 산 유광의는 타고남은 재속에서 죽은 고언주의 뼈를 찾아내서 묻어주었다.
동로군은 유광의의 인솔 하에 기주에서 출발하여 성도(成都)로 진군했다. 그 과정에서 싸우지 않고 후촉의 항주(降州), 만주(萬州), 시주(施州), 개주(開州), 충주(忠州) 등 여러 주들을 점령한 송군은 곧바로 성도의 동쪽에 있는 수주(遂州)로 진군했다.