次日,丁汝昌只得下令将北岸炮台炸毁。这样,“威海之防尽堕”,威海卫城陷落,北洋海军被封锁在港内,形势万分危急。此时,丁汝昌断然拒绝日军的诱降,决心血战到底。初九,日本海军大举出动,猛烈进攻威海港前沿天然门户刘公岛和日岛。日本陆军也将原南岸炮台的7门大炮修复,从海岸射击北洋水师,形成“炮资敌,我杀我”的惨痛局面。北洋官兵及守岛陆军奋起发炮还击,击中筑紫、葛城等日舰。次日深夜,日军鱼雷艇进港偷袭,北洋旗舰定远被击伤搁浅。十二日,日军故伎重演,北洋海军来远、靖远、威远、宝筏4舰又被鱼雷击沉,实力大损。十三日,日军发动总攻,清军士兵奋勇迎战。双方炮火互射,硝烟蔽海,战斗甚为激烈。松岛、桥立、千代田、秋津洲、浪速、扶桑等日舰均被击中,士兵死伤众多。
清军日岛炮台弹药库也被敌炮击中爆炸,守军被迫撤至刘公岛。正当战斗激烈进行时,北洋鱼雷艇管带王平贪生怕死,率10余艘鱼雷艇和2艘汽船乘机逃跑,被日舰追及,大部分鱼雷艇被击沉,北洋海军损失惨重。十四日夜,日舰又破坏了封锁威海港东口的铁链,打开了港口门户。清军极其盼望援军赶来,但希望渺茫,士气开始低落。这时,在北洋舰队服务的外国船员英人泰莱、克尔克(Kirk)、德人瑞乃尔等散布失败情绪,威逼丁汝昌向日军投降,遭到丁严辞拒绝。为避免战舰落入敌手,丁汝昌下令炸沉各船。十六日,管带刘步蟾在定远被炸沉后自杀殉国,其余各舰将领害怕以徒手降敌“取怒倭人”,竟拒绝执行命令。
十七日,北洋守军弹药将尽,势不能支。当夜,丁汝昌召集部下,提出冒险突围,多数将领表示反对,纷纷散去。丁汝昌见大势已去,决心以身殉国,与刘公岛北洋护军统领张文宣(?―1895)、镇远管带杨用霖(1854―1895)先后自杀。第二天,外国洋员浩威勾结威海卫水陆营务处候选道牛昶晒等人投降。二十日,牛昶晒代表清军在投降条约上签字,刘公岛沦陷。
二十三日上午10时30分,日本联合舰队摆出征服者的架式,占领了威海港,举行捕获仪式。北洋海军镇远、济远、平远、广丙、镇东、镇西、镇南、镇北、镇中、镇边等10艘舰船全部作为日军战利品,被插上日本国旗。北洋练习舰康济号被解除武装,交还中国。下午4时,康济载运着丁汝昌、刘步蟾、杨用霖、张文宣等人的灵柩,在潇潇细雨中凄然离港,驶向烟台,汽笛哀鸣,威海卫之战至此结束,清政府苦心经营多年的北洋水师全军覆没。