整个吴淞口,由江南提督陈化成和徐州镇总兵王志元等率兵二千四百名驻守。
其中五百名由总兵周世荣率领驻守东炮台,其余则防守吴淞镇至宝山一线。
战前,牛鉴也率兵千余驻于宝山,以为后援;宝山知县则带乡勇二千在东炮台后面接应。
另在吴淞与上海间的东沟两岸添设了数十尊大炮,驻兵四五百名,防止英军进窥上海。
6月13、14两日,侵华英军陆海军司令率舰船六艘、运输船十二艘至吴淞口外进行临战侦察。
6月16日晨,英军开始向吴淞发起进攻。
针对清军设防情况,英军确定以“皋华丽”号等三艘重型军舰从正面进攻西炮台,以“摩底士底”号等四艘轻型军舰突入黄浦江,进攻吴淞镇炮台和东炮台,威胁清军的侧后,并掩护登陆部队于吴淞镇附近登陆。
当两艘重型英舰进入西炮台附近作战水域时,陈化成下令开炮。守军以猛烈的炮火阻击英舰,激烈的炮战进行了两个半小时,英旗舰“皋华丽”号及其它各舰被击中多次,死伤二十余人。
英国一军官后来追述说:“我方舰队自与中国军队作战以来,中国人的炮火以这次为最厉害。”
陈化成虽年已七旬,在近两年的战备中始终坚守职责,威望较高。在此次炮战中,他奋不顾身地亲自操炮轰击敌舰,与士卒一起战斗。
牛鉴三次派人持令箭要陈化成退避宝山,都遭拒绝,不得已从宝山率兵增援吴淞,但一见敌弹落于身旁,即返身后退,继而率兵西逃嘉定。王志元也跟着弃阵而逃。
当西炮台正面激烈炮战时,四艘轻型英舰驶入黄浦江,逼近吴淞镇南面的蕴藻浜,以猛烈炮火压制吴淞镇炮台的火力,掩护登陆兵占领了该炮台。
不久,吴淞镇清军实施反击,迫使英军退回堤岸。正当吴淞镇激战之际,西炮台正面被英军突破,大队英军随即登陆。
接着,从吴淞镇登陆之敌也从侧后袭击西炮台。陈化成在敌军前后夹击下,仍率兵百余名坚守炮台,最后全部阵亡。