英、法侵略者却不愿按照清政府指定的路线和方式进京。6月17日,英、法等国舰船陆续驶抵大沽口外集结,并且开始不断进行侦察,破坏白河口清军防御设施,进行挑衅。6月18日,清廷再谕僧格林沁,如果英、法等使坚持进京换约,可准其由北塘上陆,先至天津等候,俟桂良等到后商议,但不得随带兵船,不得多带从人。同时,对于英、法军队的挑衅行动,则要求僧格林沁勿令官兵轻举妄动。6月20日,普鲁斯、布尔布隆等到大沽,坚持按照他们自己决定的办法去北京,即率英、法舰队沿白河上驶至天津,转赴北京。21日,英、法公使授命英军舰队司令贺布扫除大沽口的防御设备。贺布当即要求大沽守军在三天内将拦河铁戗等障碍物统统撤去,并称若不撤去,则将即自行带人拔除。威妥玛对直隶总督派去的投递照会的人员扬言“定行接仗,不走北塘”。
6月25日下午,英、法舰队向大沽炮台发起进攻,炮台守军忍无可忍,立即开炮还击。经一昼夜激烈炮战,联军遭到惨败。参战的13艘英军舰艇中,有6艘丧失了战斗力,4艘被击毁或击沉。参战英军约1200人,死伤578人,英军舰队司令贺布亦受伤。参战法军约60人,死伤14人。侵略军夺取炮台的尝试终以彻底的失败而告终。大沽炮台遭轻度破坏。清军在这次抗击作战中阵亡32人。结果,英法联军无力再战,只得狼狈撤走。这是自第一次鸦片战争以来,中国军队抵抗外国侵略军所取得的最大的一次胜利。