正在大清部隊各派係之間矛盾重重之時,日軍卻步調出奇地一致。正月三十(1895年2月24日),日軍向南岸炮台發起總攻,當天就攻下了摩天嶺炮台和楊峰嶺炮台是少將旅長大寺安純明治二十八年(1895年)被“來遠”艦擊斃。此後,日軍的左路縱隊開始進攻龍廟嘴炮台。由於受獎戴宗騫平時貪汙軍餉,軍隊缺額過半,自己又貪生怕死,因此在拉上老百姓抵抗一陣之後邊率部逃跑,自己更是逃到了北岸炮台。就這樣,日軍輕易攻占了龍廟嘴平台和鹿角最炮台。之後,日軍的目標就是威海衛最大的炮台——皂埠嘴炮台。皂埠嘴炮台上裝備著6門大炮,是距離北洋水師停泊地點最近的一個炮台,一旦被日軍攻占,調轉炮口,劉公島以及港內的北洋水師將受到嚴重威脅。

就在這千鈞一發的時刻,一艘魚雷艇載著北洋海軍的敢死隊急速駛向皂埠嘴炮台。他們在丁汝昌的命令下,冒著日軍的炮火,終於趕在日軍占領皂埠嘴炮台之前在炮台底下布置了數十顆地雷。10分鍾後,日軍大隊人馬蜂擁闖入皂埠嘴炮台。在炮台上歡呼的日軍沒有發現埋伏在炮台底下的北洋艦隊敢死隊正在點燃地雷的導火索。正當日軍搶著在皂埠嘴炮台上懸掛日本軍旗時,隨著一聲巨響,炮台被掀到半空中。北洋艦隊的這次行動不僅炸死了許多日本士兵,更重要的是摧毀了即將落入敵手的6門大炮,減少了對劉公島和北洋艦隊的威脅。

在得知南岸炮台失陷的消息後,李鴻章十分震怒,他電令丁汝昌將逃回的守台營官就地正法,同時他再次命令丁汝昌“帶艦衝出包圍,各往煙台或吳淞”,但丁汝昌回電表示,他已經下定了株守軍港,以死報國的決心。

二月初二(1895年2月26日),日軍在占領了南岸炮台之後,又向北岸炮台進攻。剛剛跑到北岸炮台的戴宗騫身邊隻剩下十幾名親信隨從,成了“光杆司令”。丁汝昌為了不使北岸炮台落入敵手,派敢死隊炸毀了北岸炮台。戴宗騫逃到劉公島後知道自己罪無可逭,自殺身亡。在日軍占領了南北岸平台之後,港內的北洋艦隊已經成了在日軍包圍圈中的囊中之物。

次日,伊東祐亨率領日本聯合艦隊全麵出擊,登陸的日本陸軍第一軍也在修複南北岸炮台後同時配合其作戰,丁汝昌的北洋艦隊在腹背受敵的情況下堅持兩線作戰,伊東祐亨直到天黑也沒能消滅北洋艦隊。入夜,一個副將給伊東祐亨提出了一個建議——夜間偷襲。正當執行偷襲任務的魚雷艇即將到達任務區域時,北洋艦隊的炮手聽到了異常的細微響動,於是大功率探照燈隨即開啟,炮彈傾瀉而至,魚雷艇隨即爆炸,其中一艘是被“定遠”艦擊沉的。就在北洋上海軍各艦上的官兵擦拭頭上的冷汗時,誰也沒有想到,被“定遠”艦擊沉的那一艘魚雷艇最後發射了一枚魚雷,恰好擊中了“定遠”艦。隨著一聲巨響,這艘當時亞洲最大的鐵甲艦被撕開了一個大口子,艦體開始傾斜。心如刀絞的丁汝昌下令把“定遠”艦開到劉公島擱淺,作為炮台使用。二月初五(1895年3月1日)的晚上,北洋水師有5艘艦艇被擊傷或擊沉。次日夜間,丁汝昌再次召開緊急會議,大家一致認為,與其被動挨打,不如主動出擊;與此同時,伊東祐亨也認為北洋艦隊已無大的戰鬥力,決定於第二天進行兩軍的決戰。

戰鬥在清晨打響後,北洋艦隊的13艘魚雷艇衝出隊列,一度使伊東祐亨嚇了一跳,但是值得伊東祐亨慶幸的是,這些魚雷艇是逃往煙台去的,而不是來攻擊的。於是,幾艘日本聯合艦隊的戰艦尾隨而至,於40分鍾後將這13艘魚雷艇中的12艘或擊沉、或擊傷、或俘獲,隻有“福龍”艦成功逃回煙台。與此同時,劉公島的“定遠”艦自沉,劉步蟾及其5000餘人隨著“定遠”的沉沒而沉沒,北洋艦隊的精神支柱也垮了。

二月十一(1895年3月7日)夜晚,丁汝昌在秘密向伊東祐亨遞交投降書後在“鎮遠”艦上飲鴆自盡。伊東祐亨做夢也沒有想到,世界第六、亞洲第一的北洋艦隊竟然在此時此地向他以此種方式結束了戰鬥。因為這一天正是日本古代的第一任天皇——神武天皇的登基之日。第二天,伊東祐亨將北洋水師剩餘的10艘艦艇編入日本聯合艦隊的戰鬥序列,10艘艦艇上的大清龍旗黯然降下,日本的太陽旗昂然升起。此後,包括薩鎮冰的練船“康濟”艦在內的北洋水師10艦以原名參與了後來日本聯合艦隊的大多數戰鬥行動,直到退役,這是後話。但是日本朝廷對大清朝廷的侮辱卻是十分明顯。

19世紀最後一場舉世矚目的蒸汽機艦艇大海戰就這樣落下了帷幕。此後的半個多世紀中,中華民族再也沒有能力建立起一支能夠與北洋艦隊相媲美的成熟的海軍。

北洋艦隊被擊垮,而陸上作戰結果尚不明朗,作為“洋務三傑”之一的時任北洋通商大臣的李鴻章心痛不已,畢竟近40艘用白銀堆砌起來的亞洲第一艦隊就這樣壽終正寢了,李鴻章將近20年的苦心經營也隨著北洋艦隊的失敗而付諸東流。