在清政府正式宣战之前,从7月21日起,援朝清军分南北两路开始进发。南路从海上运至牙山,除1800余名官兵到达外,“高升”号所运官兵在丰岛海面遭日本海军袭击。北路入朝的援军为四支大军,即记名提督宁夏镇总兵卫汝贵统率的盛军13营共6000人,总兵马玉昆率领的毅军4营共2000人,高州镇总兵左宝贵统领的奉军马队2营、步队6营及炮队1营共4000人,以及副都统丰升阿率领的奉天、吉林练军1500人。四大军共32营,总兵力13500余人,于8月9日大部分集结于平壤。
入朝日军各部则在第5师团长野津道贯中将指挥下,先后集结汉城、朔宁、元山一带,与大岛义昌少将所率第9混成旅团会合,总兵力达19600人,其中担任进攻平壤的兵力为16000余人。日军于9月初分兵四路北上,15日凌晨,从南、西、北三面向平壤发起总攻击。在平壤南战场,日军混成第9旅团集中兵力从正面和右侧向大同东左岸船桥里清军阵地发起进攻。马玉昆指挥毅军和部分盛军顽强反击。大同江右岸的清军也隔江向日军侧面发炮轰击,左宝贵亲率部分盛军过江作战。双方激战至下午2时半,日军在清军的反攻下仓皇败退。船桥之战,清军以2200人击退日军3600人的进攻,日军将校以下死者约140名,伤者约290名。在平壤西战场,上午8时,日军第5师团主力5400人到达预定阵地,向防守平壤中城的清军发起炮击,步兵随即攻城。清军发炮还击,两次派骑兵从中城冲出,突向敌阵,最后依凭堡垒坚守;日军进攻严重受阻,只得暂时休战。平壤北战场则为主战场,日军集中主力7800人,分东西两路向城北的牡丹台、玄武门发起进攻。防守城北的清军仅约2900人,敌我力量十分悬殊。日军集中优势兵力攻击防守城北的左宝贵所率奉军。左宝贵临危不惧,登城上指挥战斗,杀伤日军甚多。至8时30分,平壤制高点牡丹台在日军炮火的猛攻下失守。日军将山炮移至牡丹台,对玄武门及全城构成极大威胁。左宝贵在玄武门里督战,誓死抵御,多次击退敌人进攻,最后中炮壮烈牺牲。奉军士兵仍然顽强抵御,进至玄武门外门的日军无法攻入内门,只得撤至城北高地。日军虽然攻占牡丹台和玄武门,但仍被阻于内城之外,在平壤西、南两战场上的进攻亦接连受挫。日军共死189人,伤516人,且面临粮、弹、药告罄以及冒雨露宿等困难。