慶長二年 (1597 年) 初,豐臣秀吉再次發動對朝鮮的戰爭。這次準備充足,日軍水陸並進,明朝議定派兵援朝。
關於秀吉出兵的原因,主要是明朝未有答允他「京城及四道歸還朝鮮,另外四道 (即南朝鮮) 割讓給日本」。
日本小型兵船數千艘停舶在釜山,逐步向梁山、熊川逼近。泗川、南海、光州陷落,南原岌岌可危。
宇喜多秀家、小西行長、島津義弘等率領大軍抵達南原城外,朝鮮守軍相繼逃亡。歷經三天圍城戰,南原失陷,日軍屠城一日以示報復。
駐守全州的明朝將領陳愚忠,因南原失陷,領兵撤退,加藤清正兵不血刃拿下全州。日軍又攻陷黃石山、金州、公州等地,漢城屏障盡失。
明軍鞏固漢城前沿陣地,於稷山附近與黑田長政的軍團相遇,雙方大戰,黑田長政敗退。年底,明軍與日軍大戰於蔚山。
就兵力言,明軍遠低於日軍。事實上,明軍一開始即面對相當艱難的處境,據守的城市接連失陷,進攻也屢次失敗。經略楊鎬於蔚山被小早川秀秋擊敗,二萬將士陣亡,戰死的軍官也不少。
後來形勢逆轉,主要得力於武器上的優勝 (大炮殺傷力較火繩槍高)。日軍抵擋不住明軍攻勢,加藤清正的部隊更被圍困,餓死近萬人,幸好大批援軍趕至,才得以逃脫。
不過,明軍其他路線的進攻皆無功而還,未幾還倉促撤軍,導致軍隊潰散。
日軍在陸上作戰表現不俗,卻於海戰遭重挫。
李舜臣派軍艦引誘日本水師 (藤堂高虎率領) 進入鳴梁海峽 (他趁退潮時派人到岸邊設置鐵索和木樁)。正當日艦駛入,隱藏在山腳的朝鮮海軍對其發動猛烈炮轟。日艦在湍急的水流中搖晃不定,開炮還擊,朝鮮海軍有山勢掩護,炮火無法擊中目標。主帥來島通總被當場擊斃,尤其挫折日軍士氣,令軍心散渙,陣腳大亂。
李舜臣埋下的鐵索和木樁,使大量日艦無法離開狹窄的海峽。朝鮮海軍發起總攻,大獲全勝,成功切斷日軍的黃海補給線,掌握了制海權。
鳴梁大捷埋下日本退兵的伏筆。不久,小早川秀秋等七萬多人以休整名義,返回日本。留在朝鮮的,僅加藤清正、島津義弘等約六萬四千兵力。
儘管加藤清正、島津義弘等先後在蔚山、泗川取得勝利,豐臣秀吉在慶長三年 (1598 年) 年中突然死亡,令日軍分批撤出朝鮮。
明、朝聯軍分水陸兩路截擊撤退的日軍,日軍損失戰船數百艘,死者數萬人。小西行長等將領終於順利回國,露梁海戰以明、朝聯軍勝利告終 (李舜臣於是役中流彈身亡)。
征朝戰爭嚴重耗費西國大名的軍力和資金。石田三成代秀吉發佈停戰撤軍指令,亦惹起主戰派武將如加藤清正、福島正則等人不滿。這些將領投靠德川家康,對抗石田三成,引發關原合戰。