戰鬥開始不久,北洋艦隊旗艦「定遠」艦由於下水12年,7年未修,主炮炮塔起火,丁汝昌燒傷,信旗被毀(一說為被日軍艦炮擊中)。丁汝昌拒絕隨從把自己抬入內艙,堅持坐在甲板上督戰。可是他也只能鼓一艦士氣。日第一游擊隊4艦利用航速優勢繞攻北洋艦隊右翼「超勇」、「揚威」,二艦相繼被擊中起火,退出戰鬥。日艦「吉野」也被北洋艦隊擊中起火,但很快被撲滅。13時30分左右,「超勇」沉沒,管帶黃建勛落水,「左一」魚雷艇駛近相救,拋長繩援之,黃建勛不就,從容死難,艦上官兵也大部壯烈犧牲。
當日本第一游擊隊繞攻北洋艦隊右翼時,本隊也與北洋艦隊主力交相攻擊。日本軍艦「比睿」、「赤城」、「扶桑」、「西京丸」遭到北洋艦隊截擊。
「定遠」、「來遠」、「經遠」重創日艦「比睿」、「赤城」。「赤城」艦長坂元八太郎陣亡。「西京丸」也受重創。
14時15分左右,日本艦隊繞至北洋艦隊背後,與第一游擊隊形成夾擊之勢。北洋艦隊腹背受敵,隊形更加
混亂。在混戰中,北洋艦隊一直衝殺在前的「致遠」艦受到「吉野」、「高千穗」等的集中轟擊,多處受傷,船身傾斜。伊東祐亨令第一游擊隊救援「赤城」、「比睿」。「吉野號」沖在最前面,正遇上全身着火的「致遠」艦。鄧世昌見吉野恃其船捷炮利,橫行無忌,憤而說道:「倭艦專恃吉野,苟沉是船,則我軍可以集事。」決意與之衝撞,同歸於盡。鄧世昌毅然全速撞向日本主力艦「吉野」號右舷,日本官兵見狀大驚失色,集中炮火向致遠射擊,致遠艦右側魚雷發射管被擊中,引起大爆炸,3時30分,以右舷傾斜,在東經123度34分,北緯39度32分的黃海海面上沉沒。全艦官兵除七名遇救外,其餘自鄧世昌以下全部壯烈殉國。(此說法目前最接近事實,致遠艦沖向吉野號,有可能就是為了使用魚雷攻擊。也有另外的說法是致遠艦是被日艦火炮擊沉,戰前北洋水師已經把魚雷拋入海中。
「經遠」繼續迎戰「吉野」,遭吉野、浪速、秋津洲、高千秋四艦圍攻,中叢彈起火,全艦奮勇抗禦,經遠全艦將士「發炮以攻敵,激水以救火,依然井井有條」。經遠艦以一敵四,拒戰良久。激戰中,管帶林永升不幸「突中炮彈,腦裂陣亡」,幫帶大副陳榮和二副陳京瑩也先後中炮犧牲。最後在浪速、吉野、秋津洲、高千秋的圍攻下經遠艦中彈累累,不久,「左舷艦首向水中沉下」,在東經123度40分7秒,北緯39度51分海面上,艦首向東,左舷傾覆而沉沒。全艦官兵二百餘人,除十六人遇救外,其餘全部陣亡。
「致遠」沉沒後,「濟遠」管帶方伯謙、「廣甲」管帶吳敬榮,臨陣脫逃(方伯謙等是否臨陣脫逃,有不同看法)。「靖遠」、「來遠」因中彈過多,退出戰鬥,避至大鹿島附近緊急修補損壞的機器。
定遠、鎮遠兩艦浴血奮戰,中彈甚多,幾次起火。
下午3時30分,鎮遠艦的30.5公分大炮連續擊中日本旗艦「松島」號二次。松島後甲板四號炮塔中彈後,火焰引發炸藥,發生了大爆炸。松島船軸傾斜5度,冒起白煙,火災大作。
不久,靖遠、來遠搶修完畢,重新投入戰鬥。日本軍艦赤城、比睿、西京丸負傷,旗艦「松島」情況也不容樂觀,「吉野」、「扶桑」也受了傷,又見北洋艦隊重新集隊,伊東祐亨便於17時40分左右下令撤出
戰場。
北洋艦隊稍事追擊,也收隊返回旅順。歷時5個多小時的黃海海戰到此結束。
黃海海戰歷時5個多小時,其規模之大,時間之長,為近代世界海戰史上遠東戰區所罕見。
海戰的結果:北洋艦隊損失「致遠」、「經遠」、「超勇」、「揚威」、「廣甲」(「廣甲」逃離戰場後觸礁,幾天後被自毀)5艘軍艦,死傷官兵千餘人;日本艦隊「松島」、「吉野」、「比睿」、「赤城」、「西京丸」5艦受重創,死傷官兵600餘人。此役北洋水師雖損失較大,但並未完全戰敗。然而李鴻章為了保存實力,命令北洋艦隊躲入威海港內,不准巡海迎敵。
黃海海戰進一步揭露出了清朝的腐敗無能,北洋水師建立之初,艦隊在火力和整體噸位上遠超當時的日本海軍,日本海軍的制定擴充海軍