임진왜란 당시 부산진과 동래성을 점령한 왜적이 계속 북상하자, 이에 당황해 남해현 앞바다에 피신해 있던 경상우수사 원균(元均)은 율포만호(栗浦萬戶) 이영남(李英男)을 이순신에게 보내어 적의 상황을 알리고 구원을 요청하였다.
전라좌수사 이순신은 휘하 장수와 의논한 끝에 출전하기로 결정하고 이를 조정에 알렸다. 원균에게는 양도의 수군이 집결할 장소를 약속하였다.
조정의 출전 명령을 받은 이순신은 본영(本營: 지금의 여수) 앞바다에 집결한 휘하 장병과 전선을 점검한 뒤 전대(戰隊)를 편성하였다. 전선(戰船) 24척, 협선(挾船) 15척, 포작선(鮑作船) 46척, 모두 85척이었다.
5월 4일 이순신은 본영을 출발해 소비포(所非浦: 고성군 하일면 춘암리)에서 하룻밤을 자고 당포 앞바다에 이르렀다. 그 곳에서 원균의 전선 4척, 협선 2척과 합세해 송미포(松未浦: 거제시 동부면)에서 작전을 짰다.
이곳에서 하룻밤을 잔 뒤 5월 7일 전 함대가 동시에 출항해 옥포 근해에 이르자 척후장(斥候將)인 사도첨사(蛇渡僉使) 김완(金浣)이 적을 발견했다는 신호를 보냈다.
이 때 도도[藤堂高虎]가 지휘하던 왜선 30여 척은 홍백기를 달고 해안에 흩어져 있고, 왜적들은 포구로 들어가 재물을 노략질하고 있었다. 그러다가 아군의 기습공격을 받았다. 이에 왜적은 당황하여 6척을 앞세워 해안을 따라 도주하기 시작하였다.
아군은 이를 포위하고 맹렬하게 포격을 가해 왜선 26척을 격파하였다. 그리고 왜적에게 포로로 잡힌 3명을 구출해 임진왜란 중 해전에서 첫 승리를 거두었다. 이날 전투에서 탈출에 성공한 왜선은 몇 척에 불과하였다. 미처 배를 타지 못한 왜적은 육지로 달아났다.
아군은 달아나는 왜적을 추격해 영등포(永登浦: 거제시 장목면)를 거쳐 합포(合浦: 창원시 마산합포구)에서 5척, 다음 날 적진포(赤珍浦: 통영시 광도면)에서 11척을 각각 불태워 무찌르고 9일 본영으로 돌아왔다. 이순신은 이 전공으로 종2품 가선대부(嘉善大夫)의 관계를 받았다.