1894年11月19日,日军第二军三路纵队全部进抵旅顺口背后的防御阵地,21日,日军按作战部署开始了对旅顺口陆路防线的进攻。日军的进攻部署分左、右两翼及搜索骑兵三路:
右翼纵队:由第一师团、混成第二十旅团和攻城炮队组成。总指挥是山地元治中将,副指挥为乃木、西宽、长谷川三位少将。主攻旅顺后路西侧的椅子山、案子山、松树山、二龙山一带。
左翼纵队:由步兵十四联队、骑兵第一小队、山炮一中队和工兵二中队组成,益满中佐任指挥。攻击旅顺后路东侧的东鸡冠山一线。
搜索骑兵:由骑兵一大队组成,秋山少佐指挥,主要是侦察、搜索和联络。
其时旅顺驻清军33营,12000人,来犯日军15000余众,计有步兵15个大队、骑兵3个中队、工兵4个中队、炮兵14个中队,拥有各种炮78门。
清军防御部队的阵势为:
东线松树山、二龙山和东鸡冠山一带,由姜桂题、徐邦道驻守,总计14营2哨;
西线案子山、椅子山一带由程允和的和字步队3营防守;白玉山东麓从北路通市区的要道,由卫汝成的成字步队5营和马队一哨驻守。
从金州、大连湾撤回的连顺、赵怀业残部作为预备队留守市区。海防一带,黄金山诸炮台防务仍由黄仁林诸营担任,海口西岸的威远炮台、馒头山炮台由张光前驻守。
旅顺西北的椅子山、案子山炮台是日军进攻重点。
21日凌晨1点,西宽二郎率第二旅团乘暗夜由石嘴子宿营地出发,到达椅子山左侧。同时将炮兵第一联队的12门山炮、24门野炮及4门攻城炮布置在椅子山的西方和北方高地。
早晨7时,日军开始对案子山堡垒发起进攻。
日军用数十门山炮、野炮、攻城炮,从椅子山的西方和北方组成十字火力向清军阵地狂轰滥炸。清军案子山炮台及东侧的松树山炮台也用大小炮火进行还击。黄金山炮台也以24厘米的大口径远距离重炮进行支援。
两军炮声轰轰烈烈,大有山河为之碎裂,天地为之震颤之势。
在炮火掩护下,西宽二郎指挥步兵、骑兵向案子山堡垒发起攻击。
当日军攻至3000米左右时,守垒清军和字营在程允和指挥下,用各种火力进行猛烈还击,子弹雨点般射向日军。
日军由正面冲不上去,冒死向西迂回到案子山西侧的石板桥和北太阳沟,将部队隐藏在案子山低炮台高地西侧的死角地带。并集中炮火向案子山低炮台攻击。守炮台清军用数门机关炮向进攻的日军瞰射,极力防守。
这时,日军倾所有的大炮集中向低炮台轰击,以掩护步兵冲锋。
7时25分,日军接近炮台200米,清军坚守不屈,日军死伤多人。
7时30分,日军距炮台仅百米,清军冒着敌人弹雨,呐喊着冲出堡垒,与日军展开了激烈的白刃格斗。
战斗持续了一个多小时,双方互有伤亡。后因敌军炮火猛烈,敌众我寡,阵地相继失陷。8时15分,日军突破陆地防线,占领案子山等西线炮台。
案子山失陷后,日军全力攻击松树山。
战斗开始不久,日军炮火就击中炮台下侧的火药库,引起爆炸,大火燃烧,子弹四处飞射。清军大乱,仓皇向东面的二龙山撤退。
11时,山地元治中将指挥的日军攻占了松树山炮台。同一时间,日军长谷川少将指挥混成旅团向二成山阵地进攻。
日军的第二中队,从山下蚁附攀登。守军居高临下,俯射来敌,多次打退日军冲锋,敌军伤亡惨重。
后来,日军指挥官下达“踏尸猛进”的命令,攻入炮垒前沿300米处,其先头敢死队踏响清军地雷,死伤多人。
日军“喋血越尸”苦战肉搏,清守军用速射炮迎击。两军激烈交火,山摇地动。
双方搏斗4个多小时,攻方不断增兵,守军孤立无援,中午11时30分,清军撤离炮兵阵地。
日军左翼纵队在步兵第十四联队长益满邦介率领下,于17日经辛寨子、岔沟沿崎岖山路向旅顺东北进击。
20日晚,前哨进至龙头,大队在莺歌石宿营。
21日上午占领鸡冠山东北的团山子,9时50分开始向鸡冠山炮台发起进攻。
守鸡冠山炮台的拱卫军,在徐邦道指挥下顽强抵抗。南面的黄金山海岸炮台也用24厘米的远距离重炮进行支援,向日军侧翼进行猛烈的炮击,双方展开激烈的战斗。
10时50分,击毙日军步兵第十四联队第一大队长花冈正贞少佐。但不久,日军攻占了二龙山炮台后,派一个步兵大队前来支援。
11时45分,日军首先攻占了东鸡冠山炮台。接着,大坡山、小坡山炮台及蟠桃山临时炮台也相继被攻陷。徐邦道率军退入市区。
当天上午,驻守白玉山的卫汝成预备队,由于主将卫汝成临阵先逃,部队无人指挥,士兵放弃阵地,纷纷向海岸炮台逃跑,致使白玉山炮台失陷。到11时50分,旅顺口后路所有炮台、堡垒全为日军所占。
12时20分,大山岩司令在军部发布命令:除少数部队守卫台垒外,全力向海岸及市区进攻:第1师团攻击市区;混成旅团(第12旅团)占据市区东北部,防止清军从东路逃走,同时策应主力部队攻击市区;搜索骑兵监视旅顺口西面,并警戒日军右翼。
攻城战开始之初,日军遭到黄金山守军的猛烈炮击。
黄金山居高临下,炮台内有各种炮20余门,其中有24厘米远射程克虏伯重炮3门,这种重炮可做360度射击,机动性大、火力猛烈,对进犯日军威胁很大。
日军为摆脱被动,转派2个联队猛攻黄金山。
清军将士同仇敌忾,奋勇反击日军,但主将黄仁林见后路失陷,敌军攻势又猛,异常恐慌,撇下士兵,自己先走。
守垒军士坚持到下午5时,因指挥无主,被迫放弃炮台,沿旅顺口东路向北撤退。于是,日军连续占领黄金山、东人字墙和模珠礁等阵地。
在旅顺口海防西线,馒头山、城头山守军和从后路撤下的清军,仍固守阵地与敌抗争,直到日落天黑。日军不明虚实,暂停攻势,打算天明后再战。
这天夜里,阴云密布、风雪大作。西路清军在徐邦道、张光前、姜桂题、程允和率领下在茫茫漆黑的深夜由西部海岸向北,取道南关岭退往复州。
次日凌晨,日军进攻中发现炮台无人,上午10时30分,进入西路炮台。
至此,清军海陆炮台20余座全部失陷,李鸿章经营14年之久,耗资白银1亿两,船坞、炮台、军储东亚一流的旅顺口,竟于一日之间完全沦入日军之手。
旅顺口海陆炮台20余座所配备的新式克虏伯重炮和各种大小炮火140余门,以及水雷营、鱼雷营、船坞等各种军事设施,弹药、粮饷等各处物资,全归日军所有。
旅顺攻防战中双方伤亡人数,据日方记载:日军死亡将卒40人、伤241人、失踪7人。死伤合计288人。
清军伤亡约2500人。许多清军战败后来不及退走,放下武器,藏匿在市区居民家,被日军逐户搜出后加以杀戮。