1894年10月24日,宋庆探知日军向义州搬运粮食、枪弹及20门大炮,准备向九连城进攻。他反复研究九连城的防守部署,得出如下结论:“虎山位于鸭绿江、瑷河之间,若能坚守此山,凭高临下,便可有效地遏制日军的进攻”。因此,他率聂士成、宋得胜、马金叙诸将,再次查勘虎山形势。并对部下说:“谁能守住虎山,重赏!”马金叙自告奋勇,愿守虎山。宋庆又命令聂士成率精锐驻扎山边,宋得胜继其后为策应,加强了虎山阵地的防守。宋庆的估计是正确的,日军向九连城清军防线的进攻,正是从抢占虎山高地开始,进攻的矛头就是虎山阵地。
10月24日,日军按着预先计划好的作战部署,开始向清军鸭绿江防线发动进攻。由于朝鲜水口镇与鼓楼子附近的鸭绿江面水位较浅,容易徒涉,因此,日军首先选择九连城上游的清军左翼防线倭恒额齐字练军防守的安平河口进攻,以迷惑和牵制清军。
10月23日,山县有朋命令驻扎水口镇的步兵第十八联队长佐藤正大佐,于次日午前率军徒步涉水渡江。渡江后,配合由九连城正面进攻的第三师团,向九连城北栗子园方向发动进攻。
24日午前11时,佐藤大佐遵令指挥部队开始由鼓楼子对岸水口镇附近渡江。先头部队渡至中流时,被对岸清军发现,立即开枪狙击。布置在江对岸水口镇的日军炮兵急忙向清军开炮,掩护步兵过江。
驻守鼓楼子和安平河口的清军炮队也开炮还击。双方进行了猛烈的炮战。
11时47分,清军出动骑兵二三百骑向渡过鸭绿江右岸的日军发起冲击,企图将日军击退。但在日军反攻下,骑兵败退。
战至午后1时30分左右,驻守鼓楼子、安平河口各堡垒的清军,见渡过鸭绿江的日军增多,纷纷败退。日军占据安平河口。倭恒额、依克唐阿率军向北退往宽甸。清军鸭绿江左翼防线,就这样轻易地被日军攻破了。
日军占领安平河口后,进攻九连城的日军尚未发起进攻。佐藤支队害怕孤军深入,被清军包围,只好在安平河口露营以待后续部队。
当佐藤支队由水口镇渡江向安平河口发动进攻时,驻义州的日军大队正积极筹备架桥材料,准备于24日晚乘黑夜在义州上流虎山对面的江面上,架设浮桥,以便渡江进攻驻守虎山的清军。
鸭绿江下游在九连城与义州之间,由泥沙冲积形成的沙洲,将江水截成三个支流。东西两侧支流约宽60米,江流较浅,可以徒步涉水。但中流宽达150余米,江水很深。最深处可达3米,称中江。在中江西侧有一南北狭长的沙洲,称中江台。
日军决定在中江台北面的有利地形,架设浮桥渡江。
24日晚9时,日军先派一个大队的步兵为掩护,挑选一名善泅水的工兵,泅过中江江面,到对岸系一长绳作为搭架浮桥的桥索。由于夜深天寒,江水凛冽,该士兵泅至中流,手脚麻木被溺毙。日军又派出两名士卒,终于游到对岸,完成系绳任务。于是工兵开始架桥,一夜之间,日军在虎山对面的中江江面和东侧支流架起两座浮桥,驻守江对面的清军竟毫无察觉。
在浮桥尚未造成之前,日军即已派出第六联队于午夜11时30分提前乘船渡江,埋伏在虎山东侧。浮桥建成后,由第五旅团长大迫尚敏率一部兵力为右翼,于凌晨4时由桥上渡江与第六联队会合,向右迂回抢占虎山东方高地;第三师团长桂太郎率师团本队于拂晓6时越过浮桥,从正面向虎山阵地发起进攻。同时,义州一侧高地上的日军炮兵,也以排炮向对岸虎山清军阵地猛烈射击。
清军对于日军一夜之间架起浮桥虽毫无所知,但对日军的突然进攻似早有准备,并未出现张皇、狼狈之状。特别是防守虎山的马金叙及聂士成所部芦台兵镇定自若,善于防战,并从栗子园后方营地陆续派出援兵至前面堡垒,其射击颇为猛烈难挡。
由江东岸隔江而望,但见晨雾与硝烟相混,江岸虏山一团白云深锁,闻轰然爆炸声响惊天动地。在聂士成、马金叙指挥下,守虎山清军与正面进攻的日军第三师团本队相持,鏖战达一个多小时。
7时许,大迫尚敏指挥的右翼队,抢占了虎山东面高地,从侧后向虎山阵地清军发起进攻。
清军腹背受敌,形势危急。宋庆见状,急派马玉昆、宋得胜率毅军马步二千余人渡过瑷河,驰援虎山阵地;又令九连城铭军派队支援。
这时,在义州统军亭督战的山县有朋,见清军派出增援部队,连忙命令立见尚文率领左翼队渡过浮桥,在炮火支援下,绕至虎山西侧,截击出援的清军。清军也从九连城突角部分,用野炮向日军猛烈还击。
此时,战斗十分激烈。“炮弹轰驰,声震数十里。”
守虎山的聂士成、马金叙部和前来支援的马玉昆、宋得胜毅军,在日军左、中、右翼三路炮火夹攻下伤亡惨重,但仍苦苦支撑着。
这时,立见尚文指挥的日军左路支队,迂回至虎山西侧,即将截断援军后路,马玉昆、宋得胜被迫率军向栗子园撤退。
日军左、中、右三路乘势由虎山东、西两侧及正面发起冲锋。
守虎山的清军虽已孤立无援,但仍顽强抵抗,毫无退却之色。日军先后向虎山阵地发起四次冲锋,马金叙率部奋勇还击。在战斗中,马金叙“受伤20余处”“其弟督队阵亡”。日军伤亡虽然也很惨重,但虎山毕竟孤军无援。上午11时30分,日军占领了虎山阵地。
在大队清军由虎山阵地撤退后,仍有四百余人坚守虎山北方阵地,继续抵抗,一直战斗到午后12时30分。
日军攻占虎山后,乘势沿瑷河西上,占领了九连城以北栗子园、苇子沟附近瑷河两岸。在日军先头部队沿瑷河进犯栗子园时,遭到栗子园西面高地、河对岸苇子沟高地、九连城北方高地清军炮火以及榆树沟东方高地步兵火力的猛烈射击,死亡惨重。
午后1时,山县有朋率第五师团渡过鸭绿江,在虎山设置军司令部,开始策划对九连城发动新进攻的作战部署。
日军的计划是:26日凌晨,由桂太郎率第三师团从栗子园迂回到九连城西面蛤蟆塘附近,进攻九连城的侧背;由野津道贯指挥第五师团沿瑷河右岸,进攻九连城东北面。另派部分兵力由鸭绿江进攻安东县以牵制清军。
26日拂晓,日军按既定作战计划向九连城发起总攻。
首先用炮火进行轰击,但城中却寂然无声,不见清军动静。及派士兵攀越城墙侦察,发现全城一空,清军身影皆无。至此方知清军已于前夜弃城逃跑。
原来在25日的战斗中,清军只有马玉昆、宋得胜率所部毅军及守虎山的聂士成、马金叙率军力战,刘盛休所部4400人,隔着堡垒放了几炮,在虎山战斗紧急时,宋庆三番五次命令刘盛休率部支援虎山,但刘盛休部行至瑗河边就三步一停,慢慢吞吞。及见虎山失守,刘盛休部惊慌溃乱,丢盔弃甲。清军大乱,惊慌溃逃,也连夜退走凤凰城。于是,日军不费一枪一弹,垂手占领了九连城。
进攻安东县的日军也于26日午前渡过鸭绿江发起进攻,同样没有遇到任何抵抗。因为驻安东县清军闻九连城失利,也于25日夜全部向大东沟及大孤山一带退去。
这样,重兵屯驻的清军鸭绿江防线,竟在一日之间迅速溃败,土崩瓦解。