733년 윤3월 발해가 거란(契丹)의 가돌우(可突于)를 후원하여 당군을 하북성 천안현 북쪽에서 궤멸시킨 전투이다. 이때 가돌우는 돌궐(突厥)의 병력을 동원했고, 당군을 돕던 해(奚)는 변심하여 결정적인 순간에 돌아섰다. 발해와 당 이외에도 거란·돌궐·해가 개입된 국제적인 전투였으며 발해가 국제정세를 잘 활용해 최종적으로 승리하였다.
732년 9월 5일경 발해가 당의 등주(登州: 산동성 봉래시)를 급습하였다. 이에 대한 반작용으로 733년 정월 18일 당 현종은 발해를 공격하기 위한 군대를 일으켰다. 그는 발해국왕 대무예의 동생 대문예(大文藝)를 유주(幽州: 지금의 중국 북경 일대)로 보내 군대를 발동케 했다. 한편, 같은 달 21일에 신라 왕족인 김사란(金思蘭)을 신라에 파견하여 발해의 남쪽 변방을 공격하게 했다.
이러한 당의 양동작전에 대응하기 위해 발해국왕 대무예는 당에 적대적인 거란의 가돌우를 돌궐과 함께 후원하였다. 당의 발해 침공이 가시화되고 있는 가운데 그해 윤3월에 당군과 가돌우가 이끄는 거란·돌궐군이 마도산에서 격돌하여 대규모 전투가 벌어졌다.
733년 윤3월 6일 발해의 후원을 받은 거란의 가돌우가 거란·돌궐 군사를 인솔하여 당군을 먼저 공격하였다. 같은 달에 유주절도사 설초옥(薛楚玉)이 부총관 곽영걸(郭英傑)·오극근(吳克勤)·오지의(鄔知義)·나수충(羅守忠) 등을 출동시켰으나 부총관 곽영걸 휘하의 1만 정예기병은 유관(渝關) 마도산 주변에서 가돌우 휘하 군사에게 전멸당했다. 마도산전투 직전에 당군의 진영에 속해 있었던 해족(奚族) 기병대가 당군 진영을 이탈함으로써 당군의 사기 저하와 더불어 전체 군영의 붕괴를 가져온 것이 주효하게 작용하였다.
『한창려집(韓昌黎集)』권6을 보면, 가돌우를 후원했던 발해 군대가 마도산에 도착한 것은 마도산전투 직후였다. 발해군의 마도산 도착 소식이 전해지자 당은 진군해오는 발해와 돌궐 기병을 막기 위해 깊이 3장(丈)에 달하는 참호를 4백 리에 걸쳐 팠다고 한다. 이로써 발해의 화북침공은 저지되고 더 이상 남쪽으로 진격할 수 없었다.
한편, 발해 주력군의 일부는 당 현종의 명에 따라 한반도 동해안을 따라 북상하고 있는 신라군에 대비하고 있었다. 발해군과 신라군 사이에 전투가 벌어질 상황이었으나 대설(大雪)이 그들을 막았다. 원산만 남쪽에서 북상하던 신라군은 전 병력의 절반이 동사(凍死)하는 참사를 당하고 퇴각하였다.
마도산전투에서 발해가 승리하자 당은 발해의 국제 정치적 능력에 대해서도 재고를 해야 했다. 이 전투를 계기로 발해는 당으로 하여금 동북 제민족에 대한 제어에 있어 발해의 협조를 구해야만 한다는 점을 절감케 하였다. 발해의 군사력과 이에 바탕을 둔 외교적 능력은 발해와 당이 원만한 외교관계와 활발한 문화교류를 지속시키는 바탕이 되었다.