自從南北幫炮台被日軍占領後,威海港每天都處於日軍水陸夾攻之下。
然而,日軍想攻占威海卻非易事。劉公島周長約二十裏,周圍海岸百分之八十以上為懸崖峭壁,附近海麵礁石星羅棋布,地扼要衝,易守難攻。劉公島上建有旗頂山、迎門洞、公所後、南嘴四座炮台,此外,東口有東泓炮台、日島炮台,西口有黃島炮台,東西兩口布有水雷,水雷後又以鐵鏈木棑封口。日軍連續進攻兩天,北洋艦隊與陸路炮台互相配合,擊傷日艦“築紫”“葛城”。
日軍強攻不成,改變戰術,晚上派魚雷艇偷襲。出發前,將各艇煙囪上所塗白線以灰布遮蔽,以免暴露目標。夜裏北洋艦隊也未放鬆警戒,探照燈連續向港口照射。但燈光反而使日艇得以看清北洋艦隊哨艇及軍艦所在位置,便利了敵方魚雷艇運動。十艘魚雷艇乘夜色進入港內,北洋艦隊立即還擊,擊傷五艘魚雷艇,但定遠艦卻中魚雷,轟然一聲巨響,艦體劇烈震**。丁汝昌急令關閉防水密門,但為時已遲。海水洶湧從升降口噴出,艦體很快開始傾斜。丁汝昌知道艦已不能久浮,於是東駛至劉公島南岸淺灘擱淺,隻能當炮台使用。
此後日軍繼續采取偷襲戰術,先後擊沉了“來遠”號裝甲巡洋艦以及“威遠”號練習艦、“寶筏”號輔助船。北洋艦隊能夠作戰的隻有靖遠、濟遠、平遠、廣丙四艦及鎮字係列炮艇。
連日偷襲已使北洋海軍主力艦隻幾乎消耗殆盡,日本聯合艦隊出動二十三艘軍艦,在南幫炮台炮火配合下大舉強攻威海灣,丁汝昌親率“靖遠”等軍艦進行頑強抵禦。日艦依然無法攻進威海港,但日島火炮和彈藥庫被日軍炮火擊毀,形勢更加不利。
乘戰鬥間隙,丁汝昌給劉含芳寫信告急:“昌等現唯力籌死守,糧食雖可敷一月,唯子藥不充,斷難持久。求速將以上情形飛電各帥,切懇速飭各路援兵,星夜前來解此危困,以救水陸百姓十萬人生命,昌等感大德矣。”威海已經不通電報,他派水手教習李讚元攜帶密信乘坐“利順”輪船,由北洋海軍魚雷艇隊護衛衝出威海灣前往煙台。魚雷艇管帶王平向丁汝昌請戰,願率大小魚雷艇十三艘全部出港,不但要掩護“利順”號,還要前往襲擊敵艦。丁汝昌答應了王平的要求。誰也沒有想到,王平率魚雷艇衝出威海港,立即棄“利順”不顧,倉皇逃向煙台。日軍幾艘巡洋艦立即追趕,結果,除王平的魚雷艇逃到煙台外,其餘艦艇不是被擊沉就是被俘獲。