1950年海南岛解放后,国民党军残部退踞广东省珠江口外的万山群岛,企图以此为基地封锁珠江,并对大陆东南沿海进行袭扰。
解放军十五兵团根据中共中央军委和中南军区关于解放万山群岛的指示,迅速拟定了夺取万山群岛的计划。为了加强渡海登岛作战的统一指挥,成立了由步兵、炮兵部队和舰艇部队指挥员组成的联合指挥部。考虑到万山群岛各岛之间距离较近,加之敌舰艇较多,海上作战力量较强,守敌海陆火力对我航渡和攻岛夺岛作战行动威胁较大,指挥部制定了“奔袭军舰,逐岛攻击,依岛攻岛,稳步推进”的作战方案,并部署各参战部队迅速完成各项准备工作。
5月25日凌晨,战斗打响。解放军江防部队的作战舰艇、民船组成的火力舰队和登陆运输船队从珠海县唐家湾隐蔽出航,悄悄驶向万山群岛国民党海军舰艇泊地。凌晨4时,担任掩护任务的“解放”号炮艇,发扬解放军善于夜战近战的优势,对锚地内国民党军舰发起突袭。排水量只有28吨的“解放”号发炮命中满载排水量1520吨的国民党舰队旗舰“太和”号和满载排水量4080吨的登陆舰“中海”号,两舰迅速燃起大火。
解放军“桂山”号登陆舰也赶到战场,用猛烈的炮火进行轰击。经过一个多小时的激战,国民党军舰4艘中弹起火、1艘炮艇被击沉。
在“解放”艇和“桂山”舰与敌激战的同时,解放军“先锋一号”“奋斗”两艇在牛头岛以东海域与敌两艘炮艇遭遇。仅装备有13毫米口径机枪的“先锋一号”木壳炮艇趁敌艇用识别信号查问之际,全速迫近敌二十五号炮艇,突然开火,舰上指战员随即向敌艇投掷手榴弹,击毙包括敌艇长在内的大批敌人。在压制敌人火力后,“先锋一号”指战员越上敌艇,很快将其缴获。另一艘敌人炮艇见无法逃脱,便企图依仗吨位优势,撞沉解放军的“奋斗”艇,“奋斗”艇及时规避后接连发炮,将这艘敌艇击沉。随后赶到的解放军登陆队乘势登陆青洲岛、三角岛。5月27日清晨,解放军登陆部队夺取乘胜攻占敌舰锚地,解放军炮兵也击伤国民党军舰3艘。激战至6月5日,解放军相继攻占大小万山岛、白沥岛、横洲岛等岛屿。
国民党不甘心失败,命令多艘敌舰从台湾起航增援。增援敌舰到达后,连日在外海游弋,炮击解放军已占各岛和输送船队。27日,在查明敌舰艇活动航线后,解放军江防部队舰艇借助夜幕隐蔽驶抵三门岛海湾,设下伏兵,与三门岛岛上炮兵部队密切配合,准备迎击敌舰艇。当敌人舰艇10艘驶入伏击圈后,解放军海陆同时出击,激战5小时,击沉、击伤敌舰8艘,赢得了战斗胜利。国民党海军自三门岛海战失败后仓皇遁去,解放军登陆部队乘胜占领外伶仃岛、担杆岛,8月4日又攻克直湾、北尖和庙湾等岛,8月7日,整个战役胜利结束。
万山群岛的解放,打破了国民党军对珠江口的海上封锁,对于巩固华南海防、保证海上渔业生产和交通运输的安全具有重要意义,并为解放军日后的陆海联合作战提供了宝贵经验。