海戰打響後,日艦第一遊擊隊見北洋艦隊來勢兇猛,特別是「畏定、鎮二艦甚於虎豹」,所以一面發炮一面加速從定遠、鎮遠二艦前面奪路而行,直撲北洋艦隊的薄弱右翼超勇、揚威二艦。吉野、高千穗、秋津洲和浪速四艦集中火力猛攻,超勇和揚威竭力抗擊,日艦多處受傷。但艦齡達十三年以上的超勇、揚威畢竟不敵號稱「帝國精銳」的第一遊擊隊,下午一時二十分,黃建勳,左翼右營副將,超勇號管帶在他指揮下,全艦官兵無不誓死作戰,但「超勇」畢竟是艦齡十餘年的老艦,終究敵不過日本游擊隊的四艘主力艦,激戰中「超勇」艦中彈甚多,特別是一敵彈擊穿艙內,引起大火,剎那間「超勇」全艦被黑煙籠罩,由於「超勇」艦是木質艦身,艙內起火無法施救,不久就右舷傾斜,難以行駛,最終被烈火焚沒。黃建勳落水後,「左一」魚雷艇駛近相救,拋長繩援之,不就而沒,時年43歲。
揚威也受重傷,各炮已不能轉動,在日艦輪番轟擊下,不得不駛離戰場,但又擱淺。林履中,右翼右營副將,揚威號管帶,「揚威」是北洋水師中艦齡較老,作戰和防衛能力較弱的老艦,又處於右翼陣腳最外側。由於北洋水師陣列跨度較大,「定遠」、「鎮遠」的炮火不能支援到兩側陣腳的戰艦,於是「揚威」便遭到日本游擊隊":吉野":等四艦的猛攻。「揚威」先後中彈起火,正在此時,「濟遠」艦竟然轉舵逃跑,「撞揚威舵葉,揚威行愈滯,敵彈入機艙」,艙內彈炸火起,「漸不能支」。在此危急時刻,林履中親率千總三副曾宗鞏等發炮攻敵不止。但":揚威":首尾各炮已不能轉動,而敵炮紛至,艦身漸沉於海。林履中登台一望,奮然蹈海,都司幫帶大副鄭文超和守備二副鄭景清同時落水。當時,「左一」魚雷艇駛至,投長繩相援,林履中推而不就,隨波而沒,時年43歲。時人讚他「見危授命,激烈效忠,其所謂臨大節而不可奪者」。
在第一遊擊隊開始炮擊超勇、揚威的同時,以旗艦松島為首的日艦本隊也到達定遠艦的正前方,雙方展開了猛烈的炮擊。十二時五十三分,松島的一顆炮彈擊中定遠的桅桿,打壞定遠通訊器,此時劉步蟾在漢納根的協助下督戰,指揮戰艦不斷變換方位,使日艦不能瞄準定位。
沈壽?在「定遠」艦督炮擊敵,重創日艦「松島」、「比睿」、「赤城」、「西京丸」。這時「定遠」305mm口徑大炮發射一枚30公斤炮彈,擊中日本旗艦「松島」右舷下甲板,擊毀第四號速射炮及左舷全部炮架。死傷達二十四人。
松島號艦長尾本知道在司令伊東佑亨的吩咐下,忙令軍艦上的軍樂隊補充已陣亡士兵的位置繼續戰鬥。
由於敵艦攻擊北洋旗艦,作為報復北洋水師將士也回過頭來攻擊日艦旗艦。此時,松島也成了北洋艦隊的炮火集中打擊的目標,十二時五十五分,一顆炮彈又擊壞松島的三十二公分主炮塔,松島見定、鎮二艦炮火強大,急忙率本隊轉舵向左,加速駛避。北洋艦隊也全隊隨之向右轉舵,繼續以艦首指向日艦。而位於日艦本隊後半部的比睿等艦,因速度遲緩,遠遠落在後面。這樣,本隊便被攔腰截為兩段,形勢大為不利。
北洋艦隊抓住時機發動猛攻,各艦以右翼炮轟擊松島等前隊,又以左翼炮轟擊後面的三艦。一時四分,松島的七號炮位被定遠擊毀,而比睿已被靖遠趕上,相距僅七百米。比睿見情勢緊急,向右急轉彎,試圖從靖遠和定遠之間穿過,與本隊會合。然而,比睿立即遭到北洋艦隊的包圍,炮彈從四面飛來,傷亡嚴重。靖遠葉祖貴見狀遂下令停止炮擊,攜帶步槍的突擊隊排列在甲板上,準備靠近比睿,將其俘虜。然而事與願違,櫻井規矩之艦長在危急中,急令速射炮拚命發射,五分鐘內發射了一千五百多發,迫使靖遠難以靠近。
沈壽?見此情形,從右後方發炮轟擊。比睿被其三十公分半巨彈擊中,下甲板後部全部毀壞,艦上十九人當場炸死。頃刻間,烈火騰空,艦艇失去戰鬥力。一時五十五分,比睿依靠其速度逃出北洋艦隊的炮火網,並掛出「本艦火災退出戰列」的信號,向南駛離。
位於本隊左側的赤城艦,速度更為遲緩,落在最後。比睿駛離後,赤城孤立無助,完全暴露在北洋艦隊左翼的炮火下,中彈纍纍。一時二十分,定遠後部的十五公分炮彈擊中赤城艦橋,一號炮手、二號炮手及兩名水兵中彈身亡,正在看海圖的阪元艦長被彈片擊中頭部,鮮血染紅了海圖。阪元死後,赤城仍不斷中彈,艦上軍官幾乎非死即傷,勢難支持,便轉舵向南駛離。來遠在後尾追,連連發炮,先擊倒大檣,又中艦橋,代理艦長也受了傷。到下午二時半,赤城總算逃離作戰海域。
此時北洋艦隊二艦被擊沉,小日本艦隊二艦重傷,失去戰鬥能力而退出戰鬥隊列。
下午二時半,平遠、廣丙兩艦以及福龍、左一兩艘魚雷艦加入戰鬥。黃海海戰打響時,當時沿大東溝近岸航行擔任艦隊側翼警戒的魚雷左一營都司蔡廷干,立即率領「福龍」號及本部魚雷艇隊尾隨「平遠」、「廣丙」兩艦奔赴大東溝海域參戰。下午2時30分,「平遠」、「廣丙」兩艦首先與日艦「西京丸」、「巖島」及旗艦「松島「號交戰。當時日艦比睿、赤城剛剛逃出戰區,西京丸的右舷隨即暴露在北洋艦隊前方,立即遭到平遠、廣丙等北洋艦隊各艦炮火的猛烈轟擊。其舵機遭到損壞,只能靠人力舵勉強航行。不久,右舷又中一彈,立即出現裂縫,滲進海水。程璧光指揮「廣丙」艦不斷的擊中敵艦,當平遠駛近松島二千二百米時,突然發射二十六公分炮彈,擊中松島的中央水雷室,四名魚雷發射手中彈身亡。松島也發炮還擊,炸毀了平遠的二十六公分主炮,並引起火災。平遠見勢不敵,轉舵駛避。兩艦雖然都首發命中「松島」及「西京丸」並引起大火,終因本身火力太弱,又系木質船身先後被日艦還擊受創退出戰鬥。海戰中,程璧光腹部被彈片擊中,血染內衣。
面對強大的日本艦隊,蔡廷干毫不畏縮,指揮屬下艇隊,把日方軍旗艦艦「松島」從艦隊編隊中分割開來,自己指揮「福龍」號向「西京丸」發射魚雷,由於距離太遠而沒有命中。面對敵艦猛烈炮火的射擊,蔡氏昂然挺立在指揮台上,下令「福龍」號全速銜尾向「西京丸」急進。當逼近敵艦約三十米時,「西京丸」連發三枚魚雷,「福龍」號轉舵避開。其後,「福龍」號立即折回,全速衝向「西京丸」艦首,又發射出一枚魚雷。根據當時在艦上指揮作戰的日本海軍軍令部長樺山資紀中將的《回憶錄》文中描述:「目睹此情,本艦已無法躲避,我也只好閉目待斃。」誰知魚雷竟然從艦底穿過,其他將校也相對默然。但是因為距離太近,魚雷從艦下穿過,未能觸發,西京丸得以保全,向南駛離戰場。無奈魚雷已經用完,「福龍」艇遂全速退出戰鬥。中途救起不少墮海飄浮的北洋海軍將士。
此時,小日本艦隊還剩九艦,與北洋艦隊的八艦相對。第一遊擊隊已經迂迴到北洋艦隊的背後,與本隊策應夾攻,使北洋艦隊首尾難以相顧。由於日艦以排炮擊毀定遠的信號裝置,使其指揮失靈。
北洋艦隊諸小隊雖然只能各自為戰,隊形也凌亂不整,但將校用命,士氣未減。丁汝昌負重傷不能站立,裹傷後始終坐在甲板上激勵將士。
三時四分,定遠艦腹忽中一炮,猛烈的火焰從炸開的洞口噴出,定遠忙集中人力滅火,攻勢轉弱而火勢不減。日艦第一遊擊隊趁機駛近攻擊。鎮遠、致遠見此情形,急速向旗艦靠攏,迎戰日艦。定遠的火災終於得以撲滅,但致遠艦卻中彈纍纍。下午三時二十分,數顆榴彈同時命中其水線,並引起魚雷發射管內的一顆魚雷爆炸,右舷隨即傾斜。關鍵時刻,致遠艦因缺乏堵塞水門的橡皮,未能阻止大量海水從裂縫湧入。見此情形,管帶鄧世昌依然指揮若定,下令軍艦撞向吉野。奈何吉野用其速射炮猛烈攻擊致遠艦首,加速了艦首的下沉,最終使得致遠艦推進器懸空,大頭朝下沉沒。
據美籍海員馬吉芬記載:「瞬間,該艦即向一方傾斜。最以勇敢著稱之鄧艦長世昌,早經覺悟已迫於最期,能破敵一艦,斯可以潔此生,故毅然決然出於殺身成仁之舉。冒敵艦所發巨彈有如雨霰,加之自艦傾斜已甚,致功業成之際遽爾顛覆,艦首先行下沉,推進器直現於空中,猶在旋轉不已。惜哉,壯哉!」
鄧世昌落水後,拒絕接受救生圈,魚雷艇左一也來救助,亦不應。其愛犬游到身邊銜其臂,被他用力按入水中,自己也隨之沒於波濤中。全艦二百五十餘名中外官兵,除七人獲救外,全部葬身大海。戰後,鄧世昌之死震動了朝野,光緒帝聞其犧牲得極為壯烈,遂親筆賜輓聯「此日漫揮天下淚,有公足壯海軍威」,又作詩一首云:「城上神威炮千斤,枉資劇冠挫我軍;後來無道終許汝;
致遠沉沒後,位於北洋艦隊左翼外側的濟遠、廣甲二艦就變得孤立於本隊了。開戰後,濟遠數次中炮,傷亡十餘人,管帶方伯謙便掛出「本艦重傷」信號。後來,他看見致遠沉沒,連忙轉舵向西駛離戰區,於半夜二時許回到旅順港。廣甲管帶吳敬榮見濟遠西駛,也隨之而逃,半夜駛至大連灣外時,慌不擇路,船底觸礁擱淺。吳敬榮棄船登岸,兩天後廣甲被日艦駛近擊毀。戰後,李鴻章奏請嚴厲懲辦逃將,九月二十三日,軍機處電寄諭旨:方伯謙軍前正法,吳敬榮革職留任。次日拂曉,方伯謙被押至旅順黃金山下斬首。
濟遠、廣甲逃離後,第一遊擊隊死死咬住經遠一艦,四面圍攻。經遠以一抵四,並無畏懼,拒戰良久。林永升,左翼左營副將,經遠號管帶同左翼左營守備陳京瑩協同禦敵救火,毫不畏懼,表現極為出色,激戰中,管帶林永升頭部中炮犧牲,隨後幫帶大副陳榮也中炮壯烈犧牲,接著陳京瑩接替指揮,全艦將士戮力奮戰,不久陳京瑩也中炮陣亡,陳京瑩犧牲後,經遠水兵在沒有指揮官的情況下仍然堅持作戰。此時,四艘日艦逼近到二千米以內,用速射炮實施近距離打擊,終於將經遠擊沉。全艦二百七十餘人中,除十六人獲救生還外,其餘全部遇難。
至此北洋艦隊二主力艦沉沒、二艦逃走,只剩下定遠、鎮遠、靖遠、來遠四艘主力艦;小日本艦隊一艦重傷逃脫,尚有九艘戰艦。日本方面躍居絕對優勢。