북으로 진출한 적의 우군(右軍)은 1597년 10월 초 조선·명연합군의 반격에 의하여 남으로 후퇴하였다. 가토(加藤淸正)는 우군의 선봉으로 영천·경주를 거쳐 서생포(西生浦)와 울산으로, 우군본대의 장인 모리(毛利秀元)는 양산, 구로다(黑田長政)는 동래로 갔다.
가토는 아사노(淺野長政)·시시도(穴戶元績) 등의 부장(部將)에게 도산에 축성하도록 하여 성은 이 해 12월 하순에 거의 완성되었다.
이무렵 명나라의 경리(經理) 양호(楊鎬)는 항복한 왜인을 보내어 도산성의 군정(軍情)을 탐지하고는 명나라의 마귀(麻貴), 도원수 권율(權慄), 좌병사(左兵使) 고언백(高彦伯), 우병사(右兵使) 정기룡(鄭起龍)과 함께 울산을 공격하였다.
12월 23일 명나라의 파새(擺賽)는 승리를 거두고 24일에도 조선·명연합군은 태화강(太和江)에서 대승하였으므로 그 뒤 적군은 도산성에 웅거하였다. 이에 25일부터 전투는 더욱 치열해져 적성을 삼면으로 공격하고, 아군은 화공(火攻)과 단수(斷水)의 계획을 세우고 적을 공격하기도 하였다.
이 싸움은 이듬해 1월 4일까지 계속되어 적에 큰 타격을 주었다. 각지에서 적군의 원군이 내원하였다. 일부의 아군은 포위되고 적이 퇴로를 위협하여 형세가 크게 역전되었으므로 철군하였다. 이 전투에서 왜군과 명군의 희생이 많았다.