1859年6月17日,英法聯軍艦隊以“換約”為名再次駛至大沽口外。這支艦隊由新任英國侵華海軍司令賀布少將指揮,***有艦船21艘。其中有英國軍艦17艘、運輸船2艘、陸戰隊1200人,法國艦船2艘、陸戰隊100人。此外,還有美艦3艘隨同行動。賀布發現大沽口的設防情況後,派人向守軍要求撤除海口的壹切障礙,清軍未加理睬,清政府通知英、法、美三國公使從北塘上岸進京換約,但被其拒絕。聯軍連日在海口偵察、破障、搶劫商船和漁船,並開炮挑釁。炮臺清軍在直隸提督史榮椿及大沽協副將龍汝元指揮下不動聲色地監視敵人動向。
6月25日拂曉,賀布率領13艘艦艇向海口開來,到離鐵戧不遠處停泊後,派兵拆除鐵戧和木柵,開辟通道。陸戰隊換乘搶來的中國帆船待命。15時左右,海口第1道障礙被清除後,由英艦“負鼠”號為前導前行,旗艦“鸻鳥”號等艦艇隨後跟進,並開炮轟擊兩岸炮臺。守軍也突然開炮還擊。接戰不久,敵旗艦艦長拉桑等人被擊斃,賀布也負傷,改乘大汽艇“鸕鶿”號繼續指揮。激戰到16時,參戰的聯軍艦艇多數受到不同程度的損傷,旗艦“鸻鳥”號被擊毀,“破風”號和“呼潮鳥”號2艘炮艇被擊沈。“鸕鶿”號擱淺,賀布又換乘到法艦上,清軍將“鸕鶿”號擊毀。守軍越戰越勇,史榮椿、龍汝元等將土奮不顧身,相繼陣亡。美艦也加入這場戰鬥,同樣受到嚴懲,其旗艦“托依旺”號艦長被擊傷。
17時,敵海軍陸戰隊1000余人分乘舢舨、帆船20余只在艦炮火力掩護下,沖向南岸。登陸後,他們直沖炮臺,受到守軍的攔阻射擊,在泥濘中爬行,難以前進。黃昏後,敵陸戰隊利用夜暗,匍匐前移。有少數敵兵爬到第1道溝壕邊,可是帶來的便橋太短,無法架設。清軍集中火力向敵猛射,終於將敵趕回。經過壹晝夜激戰,敵方損失艦艇4艘,另有6艘受傷,英軍傷亡578人,法軍傷亡14人。清軍僅傷亡32人,炮臺遭到輕度破壞。這是自第壹次鴉片戰爭以來中國軍民抗擊外國侵略軍作戰的壹次重大勝利。
但是,英、法等國殖民主義者不甘心失敗,蓄謀擴大侵略戰爭。1859年11月,英、法兩國分別任命陸軍中將格蘭特和孟托班為英、法遠征軍總司令,重建英法聯軍。其中,英軍1.8萬人,法軍7000人。1860年3月22日,英、法艦船18艘侵入舟山。5月27日,英軍占領大連灣。6月8日,法軍進占煙臺,完成了對渤海灣的封鎖。此後,英法聯軍就以大連、煙臺作為進攻大沽口的前進基地。7月26日,英法聯軍艦船在渤海會合後,向大沽口外開進。其中,英軍出動艦船173艘、兵力1.05萬人;法軍動用艦船33艘、兵力6300人。29日,聯軍艦船抵達大沽——北塘之間的沙壘田島附近,在距海岸約13公裏的海面待機,並進行偵察和測量。但是,清政府因第2次大沽之戰獲勝後盲目樂觀,僧格林沁等將領也驕傲輕敵,竟把2萬清軍全部放在大沽口,而在北塘卻不設防。
8月1日,聯軍艦艇30余艘,護送陸軍5000余人進攻北塘,因該地守備空虛而順利登陸,並占領了北塘鎮。後續部隊也相繼上陸,在大沽的僧格林沁沒有及時派兵阻擊,僅派馬隊“遙為屯紮”,並下令“不得先行還擊”,以致坐失抗登陸的良機。
8月7日,清政府要求談判。英、法公使予以回絕,並強令清軍交出大沽各炮臺。8月12日拂曉,聯軍萬余人從北塘出發,途中分成左、右兩路縱隊分別攻擊新河、軍糧城。9時,新河清軍馬隊2000人對敵右路部隊進行反擊。馬隊遭到敵炮火轟擊後,又被其步兵包圍。交戰不久,馬隊傷亡近400人,只得突圍。聯軍騎兵緊追不舍,清軍馬隊大部被殲,新河失陷。
8月14日晨,聯軍由新河向塘沽進逼。塘沽是大沽口北岸炮臺的側後屏障,築有高7米、長近2公裏的圍墻。墻上開有火炮射口和槍眼。加上新河清兵,***有守兵約3000人。6時,聯軍到達塘沽附近。白河中的清軍水師戰船立即開炮拒敵。雙方炮戰半小時,水師不支而退。7時30分,聯軍炮轟塘沽,隨即發起總攻,守軍拼死抵抗。2小時後,聯軍壹部泅水從葦塘迂回到塘沽側後,守軍腹背受敵,退至大沽口北岸炮臺,塘沽陷落。這時,英法聯軍艦艇在大沽口外雲集,準備配合陸軍夾擊大沽炮臺。清朝廷已喪失守衛海口信心,再次求和又遭拒絕。
8月21日5時,英法聯軍集中所有艦炮和野戰炮壹起向北岸炮臺猛轟。守軍雖開炮還擊,但炮位上的射口多是朝海口方向開的,無法向側後的聯軍回擊。各炮臺的彈藥庫先後中彈爆炸,守軍炮聲逐漸稀疏。8時之後,炮戰告停。1萬余名聯軍步兵分2路沖鋒,以英軍為左路,以法軍為右路,首先進攻石頭縫炮臺。直隸提督樂善督眾用鳥槍、擡槍和弓矛等奮勇殺敵。9時許,炮臺被炸,樂善和守兵大部陣亡,炮臺被敵奪占。北岸另外2座炮臺也在激烈爭奪後失守。北岸作戰,清軍損傷近1000人,聯軍死傷400人。僧格林沁見到北岸炮臺盡失,認為南岸也“萬難守禦”,當晚帶兵撤往天津。直隸總督恒福把南岸炮臺拱手交給英法聯軍。
大沽失陷後,賀布又率領5艘炮艇和80余名陸戰隊官兵,溯白河長驅直入。僧格林沁又帶領雙港、天津壹帶清軍1.7萬人退到通州。8月24日,敵炮艇駛至天津近郊,未經戰鬥,英法聯軍就占領了天津。