旅顺失守之前,鉴于旅顺港入口航道狭窄,舰队如果停留在港内,很容易陷入被敌方封堵港口的困境。北洋海军在11月13日最后一次巡视了旅顺基地后,就退往位于山东半岛的停泊基地——威海。
在清代,山东属于极为特殊的省份,不设总督,而由巡抚辖治。山东巡抚在职权上和直隶总督李鸿章属于平级,李鸿章除了凭借北洋大臣管理北洋海防事务的权力,可以指挥山东省威海、蓬莱等地的海防军队外,对其他山东军队的调动都要商请山东巡抚的支持。甲午战争爆发后不久,清流言官为了分解李鸿章的权力,派出与李鸿章有宿怨的安徽巡抚李秉衡出任山东巡抚。李秉衡到任后,阳奉阴违,处处与淮系军队掣肘。当时驻防威海的陆军包括淮系戴宗骞、刘超佩部绥、巩军5000余人,以及总兵张文宣部护军2000余人,主要负责威海南北岸炮台、刘公岛炮台的守卫,至于威海东部沿海的荣成一带,威海陆军根本无力分兵防御。在李鸿章的反复电商和清政府的催促下,山东巡抚李秉衡仅派出1500余名挑河民夫冒充
5营军队,前往驻扎应付。
12月初,日本大本营决定继续实现歼灭北洋海军的目标,将第二军重编为由第二、三师团组成的山东作战军,总兵力3万余人,仍然由大山岩担任军司令官。1895年1月20日,山东作战军首批部队在山东荣成湾成功登陆,当晚就击溃了挑河民夫组成的5营河防军,占领了荣成县城,随即联合舰队以主力封锁威海湾出口,防范北洋舰队出港,以图全歼。得知战事爆发,威海绥巩军抽调兵力和应急赶来的山东省军队千余人在荣成通往威海方向的桥头集,试图构筑阵地阻击日军,结果仅仅发生几场接触战后就告解体。
1895年1月30日凌晨,日军首先向威海南岸炮台群发起攻击,采用集合优势兵力、对炮台逐一拔除的打法,战斗到下午南岸炮台群全部失守。激战中,丁汝昌率北洋舰队军舰冒险驶近岸边,发炮支援陆军,甚至创造了击毙日军旅团长大寺安纯少将的重大战果,但最终无法挽回陆军败退的颓势。南帮炮台群陆续失守后,为免日军使用炮台火炮轰击北洋海军,丁汝昌派出敢死队登陆南岸,炸毁了南帮炮台群中威力最大的赵北嘴炮台火炮。同时还派出数百人组成的北洋海军水兵部队登陆,意图夺回丢失的其他炮台,尽管这支部队曾一度杀入日军前线司令部,最后还是被优势敌军包围,在龙庙嘴炮台附近全军覆没。北洋海军水兵的鲜血染红大海,成为南帮炮台保卫战的终曲。