660년 신라 김유신(金庾信)의 5만군은 육로로, 당나라 소정방(蘇定方)의 10여만 군사는 해로를 통해 각각 백제를 공격해 왔다.
나당연합군이 백제의 수도 사비성(泗沘城: 지금의 충청남도 부여)으로 쳐들어오자, 백제의자왕(義慈王, 641∼660)은 태자 효(孝)와 함께 웅진성(熊津城: 지금의 충청남도 공주)으로 피난하고, 제2왕자 태(泰)가 남아서 사비성을 고수했으나 전사자 1만여 인을 내고 패하였다.
나당연합군은 이어 웅진성을 공격, 함락시킨 뒤 당군은 왕과 왕자를 비롯해 정부고관 90여 인, 군인 약 2만 인을 포로로 삼아 해로를 통해 귀환하고, 신라 태종무열왕(太宗武烈王, 654∼661)도 이 해 10월에 회군하였다. 백제 영토 안에는 당군 1만인과 신라군 7천인이 남아서 지켰으며, 당나라는 백제 영토 내에 웅진도독부(熊津都督府)를 두어 군정(軍政)을 실시하였다.
백제가 멸망한 이후 복신(福信) · 흑치상지(黑齒常之) · 도침(道琛)을 중심으로 한 인물들은 661년 1월 일본에 가 있던 의자왕의 아들 부여풍(扶餘豊)을 옹립하고, 백제부흥운동을 꾀하였다.
사비성이 함락되자, 달솔(達率) 흑치상지는 부장 10여 인과 함께 임존성(任存城: 지금의 충청남도 예산군 대흥)을 거점으로 하여 10일 만에 3만의 병력을 규합, 소정방이 보낸 당군을 격퇴하면서 2백여 성을 회복하였다.
한편, 의자왕과 종형제간이 되는 부여 복신은 승려 도침과 함께 주류성(周留城)에 웅거해 구원병을 요청하였다. 백강(白江)과 사비성 중간지점에 있는 주류성은 소정방이 직접 사비성을 공격한 까닭에 백제병력이 온전하게 남아 있었다.
백제부흥군이 사비성으로 쳐들어가서 사비성 남쪽으로 진격해 목책을 설치하고 나당연합군을 괴롭히자, 남아 있던 백제군이 이와 합세해 20여 성이 복신에게 호응하였다.
이렇게 사비성이 외부와 연락이 끊기고 고립상태에 빠지자, 신라태종무열왕은 직접 사비성으로 군사를 이끌고 향하였다. 그리고 당나라 고종(高宗)으로부터 웅진도독에 임명된 왕문도(王文度)는 백제부흥군 토벌의 사명을 띠고 보은에 있는 삼년산성(三年山城)에서 나당연합군과 합류하였다.
그러나 왕문도가 급사하자, 태종무열왕은 직접 군사를 거느리고 이례성(尒禮城: 지금의 충청남도 논산군 노성면)을 공격해 탈환하자, 백제부흥군에 호응했던 20여 성이 모두 신라군에게 함락되고 말았다.
백제부흥운동이 패하자 복신은 임존성으로 퇴각, 흑치상지와 합류해 사비성 공격을 다시 계획하였다. 복신은 661년 4월에 일본에 사신을 보내 왕자 풍의 귀국을 독촉하였다.
그러나 앞서 3월에 왕문도의 후임으로 유인궤(劉仁軌)가 백제에 온다는 불리한 소식이 전해졌다. 복신은 먼저 유인궤의 군대와 사비성의 유인원(劉仁願) 군사가 서로 합세하는 것을 막기 위해 임존성으로부터 남하해 주류성으로 진출하고 백강 하류연안에 목책을 세우는 한편, 사비성 공격을 재차 시작하였다.
이때 유인궤는 신라군과 합세해 사비성을 근거로 한 후 주류성에 대한 공격을 감행하였다. 그러나 백제부흥군은 잘 싸워 나당연합군을 크게 쳐부수자, 신라군은 본국으로 철수하고 유인궤는 주류성 공격을 중지하고 사비성으로 돌아갔다.
복신은 부흥군의 본거지인 임존성으로 돌아와 기회를 엿보고 있었는데, 이 해 6월 태종무열왕이 죽고 문무왕(文武王, 661∼681)이 즉위했다는 소식을 접했다. 또한 나당연합군이 고구려정벌에 나서자 좋은 기회로 판단, 금강 동쪽의 여러 성을 점령하고 사비성과 웅진성 방면의 당군이 신라와 연결하는 것을 막았다.
이에 당군은 신라에 대해 웅진도의 개통을 요구했고, 고구려로 향하던 신라군은 방향을 백제쪽으로 돌려 옹산성(甕山城)을 공격하였다. 이때 지금의 대전 부근에 있는 옹산성을 비롯해 사정성(沙井城) · 정현성(貞峴城) 등 대부분의 성들이 백제부흥군의 손에 들어감으로써 웅진성과 사비성에 있는 나당연합군의 보급로가 끊기게 되었다. 보급로가 끊김으로써 아사지경에 빠진 나당연합군은 옹산성을 먼저 탈환하지 않을 수 없었다.
백제부흥군 역시 일본으로부터의 지원군이 도착하지 않아 고전을 하고 있었다. 이듬해인 662년 5월이 되어서야 왕자 풍과 함께 170척의 병력과 무기 · 군량 등을 실은 일본 지원군이 도착하였다. 이에 용기를 얻은 복신은 다시 금강 동쪽에 대한 공격을 개시해 기세를 크게 떨쳤다. 662년 말 복신과 왕자 풍은 주류성에서 피성(避城)으로 본영을 옮겼다가 663년 2월 주류성으로 되돌아왔다.
이 무렵 복신은 도침과 의견이 엇갈려 도침을 살해하였다. 두 사람은 백제부흥운동의 초창기부터 힘을 합쳐온 동지들로서 도침은 영차장군(領車將軍), 복신은 상잠장군(霜岑將軍)으로 칭하면서 일해 왔었다. 도침이 살해됨으로써 부흥운동에 큰 타격을 입게 되었다. 당나라는 손인사(孫仁師)에게 7천의 병력을 주어 백제부흥군을 치게 했고, 신라 역시 출병하였다.
이러한 위기에 복신과 왕자 풍 사이에 다시 불화가 일어나 풍은 복신을 살해하였다. 백제부흥운동의 주역인 복신이 죽고 나당연합군이 부흥운동의 본거지인 주류성을 공격하자, 왕자 풍은 고구려로 도망가고 일본 구원군은 백강에서 크게 패했다. 이로써 백제가 멸망한 660년부터 663년 9월에 걸쳐 일어났던 백제부흥운동은 실패로 끝났다.
백제부흥운동의 실패 원인은 크게 3가지로 볼 수 있다. 첫째는 부흥운동군 내부의 다툼으로 인한 세력약화이다. 복신이 도참을 살해한 이후, 다시 부여풍과 복신의 주도권 갈등이 이어졌다. 결국 663년 부여풍이 복신마저 처형하게 됨으로써 부흥군내부의 갈등이 증폭되었다. 이에 따라 일부는 당에 투항하고 또 다른 일부는 부여풍에게 합류를 거부하게 됨으로써 백제부흥군은 급속히 위축될 수밖에 없었다.
둘째는 고구려와 왜의 지원이 실패로 돌아간 점이다. 고구려는 당과의 전쟁으로 인한 백제를 직접적으로 지원해 주기 어려웠다. 그나마 파견됐던 지원군 역시 손인사(孫仁師)의 당군에게 궤멸되었다. 왜의 지원은 주지하다시피 백강전투에서 전멸함으로써 더 이상의 지원은 불가능하게 되었던 것이다.
셋째로는 경제적 기반의 상실이다. 부흥군은 초기 백제 남부 평양지대의 농업생산을 바탕으로 물자를 원활히 공급받을 수 있었다. 그러나 이 지역이 신라에게 넘어가고 왜로부터의 군량지원도 끊기게 되자 부흥군의 물자부족은 급속히 확산되었고 이것이 지속적인 부흥운동을 가로막았던 것이다.
백제부흥군의 4년간에 걸친 항쟁은 당군의 활동범위를 사비 및 웅진으로 제한시킴으로써, 당이 웅진도독부 등 5도독부를 설치하여 백제전역을 지배하려고 했던 야욕을 무산시켰다. 또한 남북으로 협공하여 고구려를 멸망시키려던 당의 의도를 일시적으로 지연시키는 결과도 함께 가져왔다.
백제부흥운동이 전후 4년에 걸쳐 나당연합군에게 항전할 수 있었던 것은 백제 사람들의 충의사상의 발로라 할 수 있다. 현재까지도 부여 은산(恩山)에서는 백제부흥운동의 꿈을 실현하지 못하고 죽은 복신의 넋을 달래기 위해 은산별신제를 지내 넋을 위로해주고 있다.