李如松率領的明朝東征大軍于1593年1月6日,到達平壤城下。次日拂曉,明軍使用上百門的弗朗機炮、大將軍炮、霹靂炮等大口徑火器對平壤城開始炮擊。連續十幾輪的炮擊把日本守軍炸的是血肉橫飛、慘不忍睹。李如松一聲令下,攻城部隊吶喊著踏過了結成堅冰的護城河撲向城下,喊殺聲猶如天塌地裂,槍林彈雨中數百架攻城梯架上城頭,一時間明軍士卒密如蟻聚,爭相攀登,平壤各門頓時陷入了激烈交戰。正午時分,參戰的戚家軍士兵率先奪取了城南的蘆門,插上了明軍的軍旗。其余門的日軍守將頓時慌了手腳,小西行長更是嚇得臉色慘白,率領人馬退回內城,以鐵炮隊為掩護堅守不出。
李如松和其弟副將李如柏率軍攻入內城,但日軍鐵炮威力強勁,如松坐騎中彈,只能換馬。如柏的頭盔也被流彈打中,險些喪命。如松計上心來,圍城三面,只留南面不設防讓日軍逃走,再半路設伏。如松遂派使者傳言給小西行長:“日軍敗局已定,只要你率軍退出平壤,我們將不予阻攔。”小西行長半信半疑,但迫于形勢只能答應,以便突圍和其他日軍匯合。天黑之后,日軍向南面撤退,沒走多久就來到了大同江。此時,江面已經結冰,日軍先頭騎兵渡江而去,發現沒有埋伏,其余部隊便爭先恐后的開始渡江。就在此時,早已在大同江附近隱蔽的明軍火炮開始齊射,雨點般的炮彈紛紛砸在了結冰的江面上,冰層上被炸出了一個個大坑。日軍頓時慌作一團,加上馬踏人踩,冰面崩塌,許多士兵掉入了冰冷刺骨的江水里。僥幸逃到南岸的士兵,也被早就埋伏好了明軍騎兵逮個正著。小西行長嚇得面無血色、失魂落魄,僅帶一隊輕騎逃走。之后又連遭朝鮮官軍、義軍的截殺,身在黃州的大友義統見死不救獨自撤兵,多虧黃海道的黑田長政派兵前來接應,小西行長才得以活命。此戰日軍死亡12000余人,明軍死亡800人。
日軍急忙在漢城召開緊急軍事會議,首先決定放棄開城。石田三成建議在漢城死守,小早川隆景則提議出兵迎擊。最后由于兵糧的問題,還是決定出兵迎擊。1月18日明軍進入開城。由于日軍迅速敗退,李如松誤以為已經將日方主力消滅,遂將步兵和火炮留置在開城。僅命將軍查大受率3000遼東鐵騎繼續向南追趕日軍。1月24日,明軍發現了日方加藤光泰、前野長康的偵查部隊,并發動攻擊,日軍大敗。得知這一消息的小早川隆景認為這是絕好的機會,派出了第三隊、第六隊、第九隊準備包圍殲滅這3000人。然而這3000遼東鐵騎是明軍精英中的精英,各個身經百戰且裝備精良,配備了三眼神銃。
25日清晨6時左右,日軍立花宗茂、高橋統増兄弟兩人率領先鋒2000人開始誘敵作戰,在碧蹄館南面的礪石嶺布陣。查大受見日軍旗幟不多,想全殲立功,追擊立花隊殺入了越川峠。越川峠地勢狹長,立花軍分為內田統續500人、小野鎮幸700人、立花宗茂700交替與明軍對戰。兩軍展開激戰,李如松五弟李如梅使用毒箭連連射中日方大將,人數不占優勢的日軍漸漸敗退。立花宗茂、高橋統増率兵退到越川峠北方右側暫歇,眼見查大受追兵已至,萬事休矣。就在此時,日軍小早川隆景隊的先鋒趕到,擊退了明軍的追擊。得知前鋒交戰,李如松率領1000騎兵前來增援,并命副將楊元率1000火器部隊稍后出發。
上午10時左右,明軍在高陽原分左、中、右三路展開。日軍先鋒部隊在碧蹄館南面的望客硯埋伏,并商定立花兄弟和吉川廣家從左邊、毛利秀包和宇喜多秀家從右邊迂回到明軍背后,小早川隆景坐鎮中央。上午11時,在正面遭到明軍三面同時進攻的粟屋景雄隊,順利的將明軍引入了包圍圈。不久,迂回到明軍背后的小早川隆景部將井上景貞隊發動了進攻,明軍頓時大亂。小早川隆景抓住機會,下令迂回部隊開始左右夾擊,同時自己和戶川達安也從正面反擊,明軍前衛部隊大敗。小早川隆景順勢向在碧蹄館北面的李如松本陣發動進攻,李如松奮力抵抗。
立花家大將安東長久身穿金甲一馬當先,與李如松展開單挑,大戰了50多個回合,李如松失重落馬。危險之際,李如梅一箭射死安東救了如松一命。李如松親衛部隊死傷80余人,貼身侍衛李有聲戰死。危機時刻,楊元率1000火器部隊趕到,對日軍實施火炮壓制。之后兩軍拼死血戰,明軍前后參戰6000余人,日軍卻有2萬之眾,到了下午1點,勝負已經很明顯了。李如松于下午2點率領部隊逃往碧蹄館北方的惠隱嶺躲避追擊。立功心切的宇喜多秀家和立花宗茂想繼續深追,被小早川隆景阻止道:“立花殿下,看看你自己的戰馬吧。”這時立花宗茂才發現自己的白馬坐騎已經完全被染成了紅色,馬鞍兩邊上放著4身換下來的盔甲,手中的日本刀也已經變彎,根本插不回刀鞘了。最終碧蹄館一戰以日軍的勉強勝利而告終。日軍撤退后,李如松戰意銳減,率軍退回了臨津江北岸。而日軍準備對附近的幸州山城發動攻擊。
朝鮮國王得知明軍拿下平壤后,命大將權粟率領4000人呼應南進,奪回了幸州山城。2月11日,權粟派遣去漢城的偵查部隊遭遇日軍,被全殲。12日,日軍從西北開始向幸州山城發動進攻。日軍經過碧蹄館一戰七隊已經合流,分成三波向幸州山城發動攻擊。朝鮮軍使用火炮、弓箭、投石等戰術堅守城池。在日軍第二波攻勢中,黑田長政使用火攻,奪取了外城。權粟帶領人馬退回內城繼續抵抗,從上午6點到下午4點,日軍的三波攻勢都被朝軍打退。眼看城內的彈藥和弓箭就要耗盡,朝鮮水師的丁杰率領船從水路帶來了補給。原來經過李舜臣的奮戰,朝鮮水軍已經完全壓制了日本水軍,奪取了制海權。而且曾于1592年8月29日對日軍登陸的據點釜山發動進攻,日軍雖然防御成功但也損失慘重。之后,朝鮮水軍就開始了四處協助陸軍作戰,不久40艘朝鮮戰船也開到了幸州山城助戰,城內守軍士氣大振。日軍見勢不妙只能退回漢城。
1593年3月,明、朝聯軍直逼漢城,與日軍對峙。李如松很快就查到了日軍在朝鮮之前的國庫糧倉龍山屯糧,遂命查大受和李如梅率領700敢死隊展開夜襲。十三座大倉,數十萬石糧食,一夜間被燒的干干凈凈。日軍頓時陷入被動,希望與大明講和。明朝派沈惟敬為使者,與小西行長、加藤清正商談具體條件:1、日軍歸還朝鮮王子2、日軍撤退至釜山3、明軍撤退至開城4、明朝派遣使者訪日。
沈惟敬與宋應昌合謀讓手下謝用梓和徐一貫冒充皇帝勅使前往日本。4月18日,明朝使者團和朝鮮兩個王子和日軍一同退到釜山。5月8日,小西行長、石田三成、增田長盛、大谷吉繼帶領大家一起渡海前往日本。5月15日,眾人來到九州的名護屋城會見豐臣秀吉,秀吉獅子大張口,開出了七個條件,讓在場的眾人都驚呆了:1、要明朝的公主嫁給天皇2、恢復海上貿易3、日本和明朝通過雙方大臣交換誓書4、將朝鮮八道中南部的四道割讓給日本,漢城和其他四道返還5、朝鮮王子或家老1-2人送到日本為人質6、朝鮮王子通過沈惟敬返還朝鮮7、朝鮮重臣不可以違背日本。