12時50分,雙方在大鹿島(大洋河口外)西南3海裏處開始交火。“定遠”首先發主炮攻擊,其餘各艦相繼開炮,但均未擊中目標。戰鬥開始不久,“定遠”發炮震塌飛橋,丁汝昌摔傷,信旗被毀,各艦失去指揮。日第一遊擊隊4艦陸續以其右舷速射炮猛轟“揚威”、“超勇”,二艦相繼被擊中起火,退出戰鬥。日艦“吉野”也被北洋艦隊擊中起火,但很快被撲滅。13時30分左右,“超勇”沉沒。
當日本第一遊擊隊繞攻北洋艦隊右翼時,本隊也與北洋艦隊主力交相攻擊。日艦“比睿”、“赤城”被北洋艦隊截擊。“定遠”、“來遠”、“經遠”重創“比睿”、“赤城”。“赤城”艦長阪元八郎太當場斃命。“西京丸”也受重傷。但是,日本艦隊利用其航速快、便於機動的優點,第一遊擊隊和本隊互相配合,至14時15分左右,本隊已繞至北洋艦隊背後,與第一遊擊隊形成夾擊之勢。北洋艦隊腹背受敵,隊形更加混亂。在混戰中,“致遠”艦多處受傷,船身傾斜。日艦第一遊擊隊救援“赤城”、“比睿”。“吉野”衝在最前麵,正遇上“致遠”。管帶鄧世昌見“吉野”十分猖狂,毅然下令開足馬力,準備用衝角撞擊“吉野”,以求與敵同歸於盡,不幸被魚雷擊中沉沒,鄧世昌等250名官兵壯烈犧牲。
“經遠”繼續迎戰“吉野”,也中彈起火,管帶林永升、大副陳策陣亡,隨後艦也被擊沉,250餘名官兵殉難。
“致遠”沉沒後,“濟遠”、“廣甲”臨陣脫逃。“靖遠”、“來遠”因中彈過多,退出戰鬥,避至大鹿島附近緊急修補損壞的機器。
在“致遠”、“經遠”等艦同第一遊擊隊激戰的同時,“定遠”、“鎮遠”兩艦正頑強抵抗著日艦本隊的圍攻,雖中彈甚多,幾次起火,全體官兵仍然堅持奮戰,重創敵旗艦“鬆島”,打死打傷炮台指揮官海軍大尉誌摩清直以下100多人。
不久,“靖遠”、“來遠”搶修完畢,重新投入戰鬥。“靖遠”幫帶大副劉冠雄見“定遠”號旗桅杆斷裂,不能升旗指揮,建議本艦代懸信旗集隊,指揮各艦繞擊日艦。這時,日旗艦“鬆島”已經癱瘓,“吉野”也喪失了戰鬥力,其餘日艦也都傷亡慘重,不能再戰,又見北洋艦隊重新集隊,便於17時40分左右撤出戰場。北洋艦隊稍事追擊,也收隊返回旅順。曆時5個多小時的黃海海戰到此結束。
黃海海戰曆時5個多小時,其規模之大,時間之長,為近代世界海戰史上所罕見。
海戰的結果是北洋艦隊損失“致遠”、“經遠”、“超勇”、“揚威”、“廣甲”(“廣甲”逃離戰場後觸礁,幾天後被自毀)5艘軍艦,死傷官兵千餘人;日本艦隊“鬆島”、“吉野”、“比睿”、“赤城”、“西京丸”5艦受重傷,死傷官兵600餘人。北洋艦隊的損失大於日方。黃海海戰以後,由於北洋艦隊不敢再戰,日本基本上掌握了黃海製海權,對後來中日戰爭的進程產生了重大影響。從這個意義上說,北洋艦隊在黃海海戰中是失利了。失利的原因一是北洋艦隊指揮失誤,排出的陣形不利於進攻,發揮不了己方艦隊在艦艇數量、大口徑火炮和防護能力等方麵的優勢,開戰不久即失去統一指揮,始終處在被動地位;二是“濟遠”率先逃跑,影響了鬥誌;三是彈藥不充足。日方則充分利用其航速、中小口徑速射火炮方麵的優勢,運用靈活的戰術,掌握了戰場主動權。