辽的陆军和福建、吴凇的水军共14万,再度增援朝鲜。联军经过侦察,决定先进攻只有两万人的蔚山。12月23日午夜,明军三路直捣蔚山,李如松交战后佯退,会同友军消灭了五百余日军。正在监督西生浦的加藤清正连忙返回蔚山,亲自守城。明军连续四天猛烈强攻,仍旧没有攻下城池,期间加藤清正也难以支撑,就送信给明军乞求讲和,被拒绝。双方僵持之时,西生浦1万3千多日军赶来增援。1598年2月9日,明军屡攻不下,被迫撤退。
蔚山战役后,双方都调整了战略。秀吉眼见反攻无望,只得继续确保防线,在朝鲜南部站稳之后再蚕食朝鲜。而明军虽经蔚山惨败,但主力未损,而且国内又派陈遴和邓子龙的水军前来助阵。朝鲜水军也得到了加强(已有5000余人)。统帅邢玠当机立断,逮捕内奸沈惟敬,大会诸将,分兵三路,同时进攻三座要塞:蔚山、泅川、粟林。而明水军和李舜臣的联合舰队合力应战,控制了南朝鲜海的控制权,切断了日军的退路。迫使日军退守朝鲜半岛的南端岛山。
这时日军盘踞朝鲜半岛已有7年之久,在沿海分布三处,战线长达千余里,士兵疲于奔命,供应不足,屡败厌战,士气低落。日军与明军交战往往“举阵惊骇奔散”,投降者愈来愈众。是时,日本国内普遍怨恨丰臣秀吉,8月18日,征战一生的丰臣秀吉因为朝鲜战争的失利,羞愤积郁,终于在伏见城死去。临死前遗命退兵。这对朝鲜的日军无疑是雪上加霜。小西行长进退不能,再次提出和谈,并再度遭拒,只能坚守城堡,等待援军。
到了十一月,日军的承受能力已经达到极限,小西行长再次准备厚礼送至李舜臣营中,希望和谈,还是遭到拒绝。绝望的小西行长向岛津义弘求救,岛津于是集结近5百艘船,企图冲破联军防线,打通回国的通路。此时,加藤清正率军先逃,日军纷纷撤退。中、朝军队英勇追击,断其归路。在东南海岸露梁海战中,李舜臣统率的水军在露梁津湾截住了五百多艘企图从朝鲜运走残余部队的日本军舰,朝中水军与侵略者展开激战,击沉日舰450艘,歼灭日军1万多人,日军彻底战败。在这次战斗中,李舜臣亲自驾船擂鼓,率龟船冲入敌阵,被日军包围。明将陈璘舍身救援,年高70的明朝老将邓子龙,率领壮士200人,跃上朝鲜战船奋战,所驾战船不幸起火,壮烈牺牲。李舜臣、陈璘杀出重围,赶来救援,李舜臣不幸身中流弹,伤重垂危,他叮嘱不许声张,把军旗交部下代为发号施令,继续战斗,直到胜利。此次海战,中朝军队大获全胜,击沉敌舰数