1350년대 이후 왜구는 고려를 끊임없이 침략하였다. 그 중에서도 우왕 재위 전반, 1370년대 후반이 가장 극심하였는데, 그 정점이 1380년(우왕 6)이었다. 이해 8월, 왜구는 500척의 대선단으로 진포(鎭浦: 지금의 충청남도 서천∼금강 어귀)에 침입하였다. 왜구는 타고 온 배를 밧줄로 단단히 묶어 놓고 상륙해 인근의 주(州) · 군(郡)을 약탈 · 방화 · 살육하였다. 이에 고려는 새로 개발한 화포를 사용하여 정박해 둔 적의 함선을 모두 불태워 버리는 대승을 거두었다. 이에 퇴로가 막힌 왜구는 옥주(沃州: 지금의 충청북도 옥천)로 달아나 먼저 상륙한 적들과 합류하였고, 영동(永同), 선산(善山), 상주(尙州), 성주(星州), 함양(咸陽) 등 충청북도와 경상북도 내륙 일대로 진출해 약탈을 자행하였다. 고려 조정은 대규모 군대를 동원하여 이들과 맞섰으나 성공을 거두지 못하였다. 9월, 왜구는 남원(南原) 운봉현(雲峯縣)을 방화하고 인월역(引月驛: 지금의 전북특별자치도 남원시 인월면 인월리)에 주둔하면서 장차 북상하겠다고 하여 조정을 놀라게 하였다.
고려 조정에서는 개경 인근에서 왜구 토벌에 성공을 거둔 이성계를 양광 · 전라 · 경상 삼도 순찰사(楊廣全羅慶尙三道巡察使)에 임명하고, 변안열(E0022936)을 도체찰사(都體察使)에, 우인열(禹仁烈) · 이원계(李元桂) · 박임종(朴林宗) · 도길부(都吉敷) · 홍인계(洪仁桂) · 임성미(林成味) · 왕복명(王福命) 등을 원수로 삼아 이성계를 도와 왜구를 토벌하게 하였다. 교전이 이루어진 곳은 황산 북쪽의 정산봉(鼎山峰) 근처였다. 왜구는 기병을 동원하여 고려군의 후미를 끊으려 하였으나, 이성계가 친병을 이끌고 나서서 다수의 적을 사살하였다고 한다. 한 차례 전투에서 패배한 후 아지발도(阿只拔都)를 두목으로 한 왜구는 험준한 지형을 이용하여 항전에 돌입했다. 아지발도는 매우 수려한 용모와 뛰어난 무용을 갖춘 인물로 묘사되었는데, 백마를 타고 목과 얼굴을 감싼 갑옷과 투구를 착용한 채 창을 휘두르며 고려군을 쓰러뜨렸다고 한다. 고려군은 이들을 상대하는 데 상당히 애를 먹었으나, 이성계와 이지란(李之蘭)이 협공으로 아지발도를 사살한 이후 전세가 크게 기울어 왜구를 대부분 섬멸하였다. 이때 전사한 왜구의 피로 강이 물들어 6, 7일간이나 물을 먹을 수 없었다고 하며, 포획한 말이 1,600여 필이고 병기도 헤아릴 수 없이 많았다고 한다. 『 고려사(高麗史)』 변안열 열전에 의하면, 처음에는 적군이 아군보다 10배나 많았으나 겨우 70여 명만이 살아남아 지리산으로 도망하였다고 한다. 이성계의 군대가 개선하자 영접하러 나온 최영(崔瑩)은 눈물을 흘리며 이성계를 치하했다고 한다. 우왕은 이성계와 변안열에게 각각 금 50냥을, 여러 장수들에게 은 50냥씩을 하사하여 전공(戰功)을 치하하였다.
황산대첩은 고려 말 왜구 토벌의 일대 전기를 마련한 전투였다. 이때 물리친 왜구는 진포에서 살아남은 자들을 비롯하여 고려 내륙에 침투해 있던 왜구들이 집결된 대규모 세력이었다. 따라서 향후 왜구의 세력은 크게 약화되었으며, 침입의 규모나 빈도도 감소하는 경향을 보인다. 아울러 황산대첩에서 큰 공을 세운 이성계는 구국의 영웅으로서 고려 조야(朝野)에 크게 명성을 떨치게 되었다. 이때의 공적은 훗날 조선 건국 이후에도 꾸준히 언급되어, 『 태조실록(太祖實錄)』이나 『 용비어천가(龍飛御天歌)』에도 이성계의 무공(武功)이 생생히 묘사되어 있다. 1577년(선조 10)에 이를 기념하기 위해 황산대첩비가 전라북도(현, 전북특별자치도) 남원시 운봉면 화수리에 세워졌으나 일제강점기에 파괴되어 파편만 남은 것을 1977년에 복원하였다.