제1차 전투는 1597년 12월 22일부터 다음해 1월 4일까지 전개되었다. 1596년 왜와의 화의교섭이 깨어지자, 도요토미(豊臣秀吉)는 이듬해 1월 재침하게 하였다. 그 때 아군은 적의 재침에 대비해 군을 정비하고 있었다.
적군은 좌군·우군으로 나누어 경상도를 침략하고는, 전라도를 제압해 충청도 방면으로 북상하려 하였다. 적의 침입이 있자 명군도 와서 지원하였다. 아군이 각지에서 분전하는 가운데, 왜군은 직산(稷山)전투에서 조선·명나라 군에게 대패 당하였다.
이후 직산에 있던 적군을 포함해 왜군은 상주까지 진출했던 가토(加藤淸正)군과 합류해 울산·서생포(西生浦) 방면으로 후퇴하고는, 울산 도산성 을 축조하고 고수하였다.
이에 명장(明將) 경리(經理) 양호(楊鎬)는 4만 4000여 명의 군사를 이끌고 도원수 권율(權慄)의 5만여 명의 군사와 합세해 조령을 넘어 울산으로 향하였다. 양호는 먼저 허위로 군사를 보내어 순천 방면을 치는 체하면서 좌군의 고니시(小西行長)군을 견제하였다.
아군은 이 때 경상좌병사 고언백(高彦伯), 경상좌수사 이운룡(李雲龍), 경상우병사 정기룡(鄭起龍) 등 여러 장수가 참가하였다. 권율은 이운룡에게 함정을 정비, 서생포 방면을 견제하도록 하였다.
이어 도산성 포위공격이 시작되었다. 포격과 화공으로 공격한 지 10여일 격전이 전개되면서, 적은 군량이 떨어지고 사상자가 증가하였다. 아군은 적의 수급(首級) 661급을 취하기도 하여 승리를 잡은 듯하였다.
그러나 그 뒤 서생포에 주둔하던 왜군과 서남방에 있던 왜군이 와서 지원해 격전이 전개되었다. 때마침 큰비로 인마(人馬)가 많이 동사(凍死)하고 사태가 점차 불리하였다. 조선·명나라 군도 많은 사상자를 내는 가운데 포위망을 풀고 1월 4일 경주로 철수하였다.
제2차 전투는 1598년 9월 22일부터 25일까지 전개되었다. 제1차 전투에서 뜻을 이루지 못한 명나라의 제독 마귀(麻貴)는 2만 4000여 명의 동정군(東征軍)을 인솔하고, 별장 김응서(金應瑞)는 5,500명의 군사를 이끌고 21일 경주에서 출발하였다.
김응서는 먼저 동래의 적군을 격파해 울산과 부산간 적의 연락선을 차단하였다. 명나라 해생(解生)의 군사가 먼저 도산성을 공격하고, 이어 마귀가 2만 명의 군사로 도전하였다.
쌍방의 유인 기습 등 치열한 전투가 전개되고 아군측은 25일에 이르러 적에게 크게 타격을 주고 조선 사람으로 적중에 잡혀 있던 1,100여 명을 구출하기도 하였다. 그러나 명나라의 마귀는 이 때 명나라군이 사천성에서 패전했다는 소식에 충격을 받고 군사를 철수하였다.