왜란이 발발한 그해 7월 8일 이순신은 원균(元均)ㆍ 이억기(李億祺) 등과 합세해 한산섬 앞바다에서 일본 수군장 와키사카(脇坂安治)가 이끄는 주력대를 격멸한 뒤에 가덕(加德)으로 향하던 중 안골포에 일본 전선이 머무르고 있다는 첩보를 접수하였다.
이에 이순신은 10일 새벽 작전 계획을 수립, 전라우수사 이억기로 하여금 포구 바깥에 진치고 있다가 전투가 시작되면 복병을 배치한 뒤에 달려와서 전투에 참가하도록 하는 한편, 자신의 함대는 학익진(鶴翼陣)을 펼쳐 선봉에 서고, 경상우수사 원균의 함대는 그 뒤를 따르게 하면서 일제히 안골포를 진격해 들어갔다.
이때 일본 전선들은 모두 42척으로 그 중 각각 3층과 2층으로 된 큰 배 2척은 포구에서 밖을 향해 떠 있었는데, 이는 수군장 구키(九鬼嘉陸)와 가토(加藤嘉明) 등이 이끄는 제2의 수군 주력대였다.
그러나 포구의 지세가 얕아 큰 배는 쉽게 출입할 수 없어서 여러 번 일본 전선을 포구 밖으로 유인하려 했으나 일본군들은 지형이 험하고 수비가 단단한 곳에 의지한 채 응하지 않았다.
이에 이순신이 계획을 변경, 여러 장수들에게 번갈아 포구 안으로 드나들면서 총통과 장편전(長片箭) 등으로 일본 전선을 공격토록 하자 마침내 일본군들도 응전하기 시작하였다. 때를 맞춰 이억기의 함대가 달려와 합세하면서 전투는 절정에 달했다.
일본군들은 사상자를 작은 배로 실어내고 흩어져 있는 병사들을 큰 배로 옮겨 가면서 총력전을 펼쳤으나, 종일토록 계속된 전투에서 대다수의 배를 잃고 250여 명의 전사자를 낸 채 뭍으로 도망치고 말았다. 이순신은 달아난 일본군들이 밤중에 바다로 나올 것을 예측, 일본 전선 중 일부는 남겨둔 채 포구 밖으로 이동하였다.
이날의 전투로 평양성에 주둔한 고니시 유키나가의 부대가 일본 수군의 도움을 얻지 못하고 고립하게 되었다. 이 해전은 이틀 전에 있던 한산해전과 함께 일본 수군의 주력대를 격멸한 해전으로서의 의의를 가지고 있다.