김원술은 3년 전 석문 전투에서 패배해 가문으로부터 죄를 짓고 서라벌을 떠났지만 문무왕은 그를 매소성 전투 책임자로 임명했다. 김원술은 장창(長槍)전술과 쇠로 만든 활인 쇠뇌를 활용해 당군과 맞섰다.
 670년 무렵 시작된 나당(羅唐)전쟁은 몇년을 두고 크고 작은 전투를 벌이다 675년 당이 유인궤를 보내 경기도 파주의 칠중성을 공격하고 말갈군을 시켜 임진강 일대의 전략적 요충지를 장악하면서 분수령을 맞게 됐다. 당시 당의 명장 이근행(李謹行)은 매소성에 20만 대군을 배치했다.
 이근행의 20만 당군과 맞선 신라군은 3만명에 불과했다. 더구나 당군은 기병(騎兵) 위주였고 신라군은 보병(步兵) 위주였다. 이런 절대 열세의 전투를 뒤집은 장군이 바로 김유신의 아들로, 아버지에게 꾸지람을 받고 김유신이 죽을 때까지 숨어 지내던 김원술이었다.
 김원술은 3년 전 석문 전투에서 패배해 가문으로부터 죄를 짓고 서라벌을 떠났지만 문무왕은 그를 매소성 전투 책임자로 임명했다. 김원술은 장창(長槍)전술과 쇠로 만든 활인 쇠뇌를 활용해 당군과 맞섰다. 매소성 밖의 벌판에서 벌어진 대결에서 장창과 쇠뇌는 엄청난 위력을 발휘했다.
 한때 세계 최고의 군사력을 보유했던 돌궐군도 물리친 역전의 노장 이근행도 신라군 앞에서는 속수무책이었다. 결과 전마 3만380필과 수많은 무기를 버리고 당나라 군대는 북쪽으로 도망가고 말았다.
 매소성 전투 이후 신라는 당과의 전투 18번을 모두 이겼다. 당군은 매소성 전투 이후 기세를 잃어버렸다. 당나라는 고구려를 망하게 한 천하명장 설인귀(薛仁貴)를 보내 신라를 제압하고자 했지만 신라군의 강력한 투쟁으로 676년 금강 입구인 기벌포에서 4000명이 죽음으로써 끝내 패하고 말았다.
