1894年9月15日上午,北洋艦隊的主力,計軍艦10艘,附屬艦8艘,在丁汝昌率領下到達大連灣。
淩晨1時,銘軍的十個營共四千人分乘五艘運兵船,向鴨綠江口的大東溝進發。
中午,艦隊抵達大東溝(今遼寧省東港市),到次日早晨,軍隊全部登陸。
9月17日上午8時,運兵船卸載完畢。
9時,北洋水師定遠號旗艦上掛出龍旗開始返航。
10時23分,日本聯合艦隊第一遊擊隊率先發現了北洋水師。便掛出“東北方向發現三艘以上敵艦”的信號旗。
10時30分,北洋水師鎮遠艦桅樓上的哨兵看到西南方向海麵上有幾簇黑煙,發現日本艦隊。丁汝昌隨即命令各艦升火、實彈,準備戰鬥。
12時05分,日本聯合艦隊第一遊擊隊在先,本隊在後,呈單縱陣,接近北洋水師。
12時20分,北洋水師在行進中由雙縱陣改為橫陣,旗艦定遠位於中央,其餘各艦在其左、右依次展開,艦隊呈楔形梯隊。同時丁汝昌還發出命令:“各小隊須協同行動;始終以艦首向敵;諸艦務於可能之範圍內,隨同旗艦運動之。”
12時50分,雙方艦隊相距5300米,北洋水師旗艦定遠艦首先開炮。聯合艦隊第一遊擊隊在距北洋水師5000米處即向左轉彎,航向北洋水師右翼。聯合艦隊航向北洋水師右翼,冒險將艦隊暴露於北洋水師陣前。十秒鍾後,鎮遠艦也發出炮彈,緊接著,北洋艦隊各艦一齊發炮轟擊。三分鍾後,日本旗艦鬆島艦也開始發炮還擊。
12時53分,聯合艦隊旗艦鬆島開始發炮還擊。定遠主桅中彈,信號索具被炮火所毀(一說因戰船老朽發炮時震塌飛橋),在飛橋上督戰的丁汝昌身負重傷。刹時間,雙方各艦百炮一齊怒放,硝煙彌漫,海水沸騰。
戰鬥開始不久,北洋艦隊旗艦“定遠”艦由於下水12年,7年未修,主炮炮塔起火,丁汝昌燒傷,信旗被毀(一說為被日軍艦炮擊中)。丁汝昌拒絕隨從把自己抬入內艙,堅持坐在甲板上督戰。日第一遊擊隊4艦利用航速優勢繞攻北洋艦隊右翼“超勇”、“揚威”,二艦相繼被擊中起火,退出戰鬥。日艦“吉野”也被北洋艦隊擊中起火,但很快被撲滅。13時30分左右,“超勇”沉沒,管帶黃建勳落水,“左一”魚雷艇駛近相救,拋長繩援之,黃建勳不救,從容死難,艦上官兵也大部壯烈犧牲。當日本第一遊擊隊繞攻北洋艦隊右翼時,本隊也與北洋艦隊主力交相攻擊。日本軍艦“比睿”、“赤城”、“扶桑”、“西京丸”遭到北洋艦隊截擊。
“定遠”、“來遠”、“經遠”重創日艦“比睿”、“赤城”。“赤城”艦長阪元八太郎陣亡。“西京丸”也受重創。14時15分左右,日本艦隊繞至北洋艦隊背後,與第一遊擊隊形成夾擊之勢。北洋艦隊腹背受敵,隊形更加混亂。在混戰中,北洋艦隊一直衝殺在前的“致遠”艦受到“吉野”、“高千穗”等的集中轟擊,多處受傷,船身傾斜。伊東祐亨令第一遊擊隊救援“赤城”、“比睿”。