5月中旬,英法联军舰队集结完毕。5月20日上午8时,额尔金和葛罗分别发出最后通牒,要求让四国公使前往天津,并限令清军在两小时内交出大沽炮台,否则即以武力占领。10时,联军炮艇开入口内,分列两队,同时开炮轰击南北两岸炮台。同时,由660名英军与518名法军组成的登陆部队,也分别向两岸清军发起进攻。当时,北岸炮台由游击沙春元率部防守,南岸的主炮台由总兵达年和游击德魁率部防守,左炮台由都司讷勒和等率部防守,右炮台由游击陈毅等率部防守。四座炮台的防兵已增加到3000人,大炮200余门。当英法联军发起进攻时,各台守兵奋起反抗,击沉敌舢板4只,毙敌近百名。法炮艇“霰弹”号遭到重创,艇长被打死,11人被打伤。但交战不久,北炮台的三合土顶盖便被击毁,南炮台炮墙亦被轰塌,许多大炮被炸毁,守台官兵遭敌炮轰击,伤亡甚重。11时,联军两支陆战队乘舢板强行登陆,接近炮台。守台清军冲出炮台,与敌人展开肉搏战。
正当各台守军与敌人浴血奋战之际,后方坐镇的谭廷襄、钱炘和等人却畏敌怯战,不但不组织部队增援,反而率先仓皇逃跑,后方清军随之相率溃散一空。各炮台守军终因后援不继,力不能支。北岸炮台守将沙春元、南岸右炮台守将陈毅中弹殉国。各炮台遂相继失守,所有火炮、器械尽被敌军掠获。5月26日,英法联军炮艇沿白河而上,兵迫天津城下。