의자왕 20년 3월(원문은 ‘서기 660년 3월’_옮긴이) 신라 왕자 김인문이 당나라 행군대총관 소정방과 함께 병력 13만 명을 거느리고 래주(萊州, 산동반도 북쪽 해안의 왼쪽 끝부분_옮긴이)에서 바다를 건넜다. 이들은 음력 6월 덕물도(지금의 남양 덕물도)에 이르렀다. 신라 태종은 금돌성(지금의 음성)에 진을 치고, 태자 김법민과 대각간 김유신 및 장군 진주·천존 등이 병선 100척을 거느리고 영접하러 나갔다. 소정방이 김법민에게 “신라·당나라 양국 군대가 수륙을 나누어 이동하자. 신라 군대는 육로로 가고 당나라 군대는 수로로 가서, 7월 10일(양력 8월 21일_옮긴이) 백제 서울 소부리(所夫里)에서 만나자”고 했다. 김법민·김유신 등은 금돌성으로 돌아가서 김품일·김흠순 등의 장수들과 함께 정예병 5만 명을 거느리고 백제로 향했다.
의자왕은 그제야 밤샘 연회를 파하고 신하들을 불러 전쟁의 방도에 관해 협의했다. 좌평 의직은 “당나라 군대가 물에 익숙지 못한 자들을 데리고 멀리 바다를 건너왔기 때문에 분명히 피곤할 겁니다. 그들이 상륙할 때 기습하면 깨부수기 쉬울 것입니다. 당나라 군대를 깨뜨리면 신라는 저절로 겁을 먹고 싸움 없이도 무너질 것입니다”라고 말했다. 좌평 상영은 “당나라 군대는 멀리 왔기 때문에 이들에게는 속전속결이 유리합니다. 그렇기 때문에 상륙하는 동안에는 다들 용감할 것입니다. 그러므로 요새를 막고 수비하다가, 저들이 양곡이 떨어지고 지친 뒤에 싸워야 합니다. 신라는 우리 군대에 여러 번이나 패한 탓에 우리를 두려워하고 있기 때문에, 먼저 신라를 깨뜨린 다음에 상황을 봐서 당나라 군대를 쳐야 합니다”라고 말했다. 의자왕은 본래 평시든 전시든 항상 용단을 내리던 인물이었다. 하지만 이때 요상한 무녀와 여러 소인배들에 둘러싸인 의자왕은, 이렇게 논의가 분분해지자 의외로 흐리멍덩해져 어찌할 바를 몰랐다. 그러다 갑자기 꾀지팡이[智謀杖]로 이름난 좌평 하나가 생각났다. 그는 성충의 일파로 지목되어 고마미지(지금의 장흥)에 귀양 간 부여흥수였다. 의자왕은 그에게 사람을 보내 계책을 물었다.
흥수는 이렇게 대답했다. “탄현과 기벌포는 나라의 요충지입니다. 한 명이 칼을 들고 막아서면, 일만 명도 덤비지 못할 곳입니다. 육군과 수군에서 정예병을 뽑아 당나라 군대가 기벌포에 들어오지 못하게 하고 신라 군대가 탄현을 넘지 못하게 해야 합니다. 그렇게 하면서, 대왕께서는 도성을 지키고 있다가 적군의 양곡이 떨어지고 병사들이 지친 뒤에 공격하면 백전백승할 겁니다.”
사람이 돌아와서 왕에게 보고하자, 임자 등은 성충의 잔당이 다시 기용될까봐 두려워했다. 그래서 그들은 “흥수가 오랫동안 귀양생활을 한 탓에 임금을 원망하고 성충의 은혜를 그리워하고 있습니다. 그래서 늘 보복의 마음을 품고 있습니다. 그는 이번 기회를 이용해서 성충의 유언 찌꺼기로 나라를 잘못되게 만들려 하고 있습니다. 그러므로 그의 말은 쓸 수 없습니다. 당나라 군대는 기벌포를 지나게 하고 신라 군대는 탄현을 넘게 한 뒤에 이들을 한 데 모아 공격하면, 주머니 속에 든 자라를 잡는 것처럼 한꺼번에 두 적을 분쇄할 수 있습니다. 그런데 어찌 험한 곳을 막고 적과 대치하며 시일을 허비하고 군사들의 용기를 떨어뜨릴 필요가 있겠습니까?”라고 말했다. 왕은 이 말이 옳다고 생각했다. 왕은 다시 궁녀들에게 술 따르고 노래 부르게 했다. 그는 눈앞에 전쟁이 다가왔다는 것을 잊었다.
음력 7월 9일(양력 8월 20일_옮긴이)에 신라 대장 김유신·김품일 등이 5만 군대를 거느리고 탄현을 지나 황등야군(黃登也郡, 논산·연산 사이)에 이르렀다. 의자왕은 장군 부여계백을 보내 신라 군대를 막도록 했다. 계백은 출전에 앞서 “어허!” 하며 말하기를 “탄현의 요새를 지키지 않고 5천 병력으로 열 배의 적을 막으라고 하니, 내 앞일을 내가 알겠구나”라고 말했다. 그런 뒤 처자식을 불러 “남의 포로가 될 바에는 차라리 내 손에 죽어라”고 말하고 칼을 빼어 그 자리에서 쳐 죽였다. 그러고 군영에 나가 병사들을 모아 놓고 “고구려 안시성 성주 양만춘은 5천 명으로 당나라 군대 70만을 격파했다. 우리 5천 병력이 각각 열 명씩 상대한다면, 신라군 5만 명을 겁낼 필요가 있겠는가!”라고 외친 뒤 황등야군까지 달려갔다. 계백은 여기서 험한 곳을 잡아 진영을 세 곳에 설치하고 형세를 뒤집었다. 김유신 등은 네 번 쫓아왔다가 네 번 다 패해 만여 명의 사상자를 냈다.
김유신은 싸워서는 승리할 수 없다는 판단이 들었다. 7월 10일의 약속이 급한지라 그는 김품일과 김흠순을 돌아보면서 “오늘 이기지 못하면 약속을 지키지 못한다. 당나라 군대가 단독으로 싸우다가 패배하면 신라의 수십 년 노력이 허사로 돌아갈 것이다. 만약 당나라 군대가 단독으로 승리하면, 비록 남의 힘으로 복수는 한다 하더라도 신라는 당나라의 모멸을 견디지 못할 것이다. 어쩌면 좋겠느냐?”라고 말했다. 김흠순과 김품일은 “오늘 열 배의 병력으로 백제를 이기지 못하면, 신라인은 다시 면목을 세우지 못할 것입니다. 먼저 내 자식을 죽인 뒤에 남의 자식에게 혈전을 독려하지 않으면 안 되겠습니다”라고 말했다.
김흠순은 아들 반굴을 부르고 김품일은 아들 관창을 불렀다. 김흠순과 김품일은 “신라 화랑은 충성과 용맹으로 이름을 날렸다. 지금 1만 명의 화랑 병력으로 수천 명의 백제 군대를 이기지 못하면 화랑도 망하고 신라도 망한다. 너희는 화랑의 두령으로서 화랑을 망칠 것인가? 신하가 되면 충성을 다해야 하고, 자식이 되면 효성을 다해야 한다. 위기 앞에서 목숨을 바쳐야 충과 효를 다했다고 할 수 있는 것이다. 충효를 다하고 명성을 얻는 것이 오늘의 임무가 아니겠는가?”라고 말했다. 반굴은 “예!” 하고 자기 부하들과 함께 백제 진영으로 달려 들어갔다. 하지만 그들은 모두 전사했다.
관창은 겨우 열여섯 살로 화랑 중에서 가장 어렸다. 그는 반굴의 뒤를 이어 필마단창(匹馬單槍)으로 백제군에 뛰어들어 여러 명을 벤 뒤에 사로잡혔다. 계백은 소년의 용맹이 대견해서 차마 해를 가하지 못하고 “어허!” 하면서 “신라에 소년 용사가 많으니 가상하구나” 하고 돌려보냈다. 관창은 아버지 김품일에게 “오늘 적진에 들어가서 적장을 베지 못했으니, 정말 부끄러운 일입니다”라고 말했다. 그는 물을 움켜 마시고 갈증을 해소한 다음에, 채찍으로 말을 몰며 장창을 들고 백제 진영에 들어갔다. 그러자 계백은 그의 목을 벤 뒤 그 머리를 말꼬리에 달아 신라 진영으로 보냈다.
이를 본 김품일은 도리어 기운이 나서 “내 아이의 얼굴이 산 사람 같구나. 나라를 위해 죽었으니 죽은 게 아니로다”라고 부르짖었다. 그러자 신라군은 감동하여 용기가 치솟았다. 이에 김유신이 총공격을 명하자, 수만 명이 일제히 돌진했다. 계백은 직접 북을 치며 싸움을 독려했다. 결국 양국 군대 사이에 육박전이 벌어졌다. 계백과 백제 군대가 용맹하고 강하다 해도, 숫자가 너무 달리니 어쩔 것인가. 성스러운 희생으로 백제의 최후를 장식하고 전장에 쓰러질 뿐이었다. 신라군은 승전가를 부르며 백제 왕도를 향해 나아갔다.
이때 당나라 장수 소정방은 백강 입구의 기벌포에 도착했다. 수리(數里)나 이어진 개펄 때문에 섣불리 상륙할 수 없었다. 초목을 베어 바닥에 깐 뒤에야 간신히 상륙할 수 있었다. 백제왕은 임자의 말대로 자라가 주머니 속에 들어오면 잡겠다는 생각으로 백강(백마강) 입구를 지키지 않았다. 백제 수군은 백강 안쪽을 지키고 육군은 언덕 위에 진을 치고 있었다. 개펄을 지난 당나라 군대는 후퇴할 곳이 없기 때문에 그저 전진하는 수밖에 없었다. 당나라 군대가 용기가 끓어올라 백제 수군을 격파하며 언덕 위로 올라오자, 의직은 군대를 지휘하며 격렬히 싸우다가 죽었다. 의직은 비록 지략은 계백만 못했으나 용감함은 서로 비슷해 한때 당나라 군대의 간담을 서늘케 하였기 때문에, 신라인들은 의직이 죽은 곳을 조룡대(釣龍臺)라고 불렀다. 의직을 용에 비유하고 의직을 죽인 것을 용을 낚은 것에 비유한 모양이다.
그런데 《동국여지승람》에 따르면, 소정방이 백강에 도착할 때 비바람이 너무 심해서 행군할 수 없었다고 한다. 그래서 무당에게 물어보니 무당은 “강의 용이 백제를 지키고 있다”고 말했다고 한다. 소정방이 백마를 미끼로 그 용을 낚았기 때문에, 강을 백마강이라 부르고 대(臺)를 조룡대라고 불렀다고 한다.
사실, 백마라는 강 이름은 소정방이 도착하기 전부터 있었다. 성충의 상소문에도 백강 입구라는 말이 있었다. 백강은 백마강의 준말이다. 일본 역사책에서는 백촌강(白村江)이라고 했지만, 촌(村)은 ‘말’을 뜻하므로 백촌강은 백마강의 별칭이다. 《동국여지승람》에 실린 야사는 그 자체가 황당할 뿐 아니라 역사와도 모순된다. 《해상잡록》에 적힌 대로 이곳은 의직이 죽은 곳이라고 봐야 한다.