虎門之戰，發生于清道光二十一年（1841年）2月，是第一次鴉片戰爭期間，英國遠征軍進攻廣州門戶虎門要塞與清朝守軍發生的一場重要戰役。這場戰役共有三次戰鬥，分別為沙角山、大角山戰鬥，橫檔島水道戰鬥和橫檔一線戰鬥。這場戰役最終以虎門要塞陷落，英軍獲勝告終，廣東水師提督關天培在這場戰役中陣亡。
源起
1840年7月28日，懿律和義律率「威里士厘」號等艦船八艘，駛離舟山群島北上，于8月9日進泊大沽口外。道光帝在8月9日接到琦善的復奏，得悉天津炮位陳舊、兵力不足時，立刻派遣琦善前往大沽口外與英軍和談。琦善與義律在大沽口舉行會談中對英方所提要求，表示「定能代申冤抑」，但前提是英軍「返棹南還，聽候辦理」。9月15日，英軍方表示同意將談判地點改到廣東，並即日起碇南返。11月29日，琦善到達廣州接替林則徐，不久即與英方代表開始談判。義律在和談中堅持其償還煙價二千萬元，割讓香港，開闢廈門、定海為商埠等一系列要求，並一再以開戰相威脅，結果談判陷入僵局。英軍爲了爭取主動地位，于1840年12月上旬，出動艦船二十餘艘陸續駛抵虎門外，準備進行武力進攻。
戰前準備
英國遠征軍
由於琦善和義律和談持續一個月未有結果，1841年1月，英方決定展示武力來迫使大清屈服。此時英國遠征軍在虎門外海的陸海力量為，海軍戰艦十四艘，載炮446門、武裝輪船四艘，每艘載炮4門，以及運輸船若干。陸軍計2000人，由馬德里斯土著步兵37團，皇家步兵第18團，第26團和第49團，此外炮兵、工兵組成，由布爾利上校統率。
虎門要塞佈防情況
虎門要塞位於珠江入海處，是從海上進入廣州的咽喉要地，地勢十分險要。整個防線由三道門戶構成，分別為：沙角山、大角山，構成第一道防線；橫檔島聳立江中，將水道分隔為二。構成第二道防線。由橫檔島再上溯五里，江中有大虎山島，構成第三道防線。沙角山、大角山均築有炮臺（沙角炮臺筑于1801年，大角炮臺筑于1832年），關天培以兩臺間的炮火不能形成交叉火力，無法封鎖海口，將其改為訊號炮臺，擔負瞭望警報任務。上橫檔島早在1717年（康熙五十六年）即修築了橫檔炮臺，其東岸之南山（亦稱武山）修築了威遠炮臺；1815年（嘉慶二十年）又在威遠炮臺北側修築了鎮遠炮臺。
關天培在任期間，于威遠、鎮遠炮臺之間添筑了靖遠炮臺，于上橫檔島西端添筑了永安炮臺，西岸南沙山（即蘆灣山）添筑了鞏固炮臺。到鴉片戰爭時，橫檔地區共有炮臺六座，安置新舊火炮二百一十二門。此外，在兩廣總督鄧廷楨的協助下，關天培還在橫檔島和南山之間建造了兩道鐵鏈，以防敵艦闌入。對1818年修築的大虎山炮臺，關天培到任后也作了加固，並添置了炮位。在炮臺構築方面也作了一些改進和加固，但所有新舊炮臺，仍未脫離古代城堡的結構形式，長墻高臺，既無掩蓋，又無交通壕，戰時人員、火炮易受損傷。
林則徐抵粵后，在嚴厲禁菸的同時，陸續採取了一系列戰備措施，以應付日益緊張的形勢。這些措施是：整頓水師，嚴肅軍紀，演練槍炮，以提高戰鬥力；在尖沙嘴、官涌等處新建炮臺；新添5000斤-9000斤秘密購置西洋大炮及他夷精製生鐵大炮數十門，使虎門各炮臺的大炮增至三百餘門；購置西洋大船，改裝民船，招募鄉勇；此外又抽調廣東內地營汛防兵，加強第一線兵力，使虎門的水陸兵力增至三千餘名，澳門增至一千三百餘名，尖沙嘴增至八百餘名。
琦善奉命赴粵后積極籌備通過談判解決問題，他認為「英夷強橫，非中國可能敵」。於是抵達廣州后，將數千名義勇解散。虎門內外各隘口原有防兵萬餘，琦善到任后，又大加裁撤，並將水師水勇船隻或撤或裁，又拆除江底暗樁等障礙物，以向英國方面展現和談誠意，求得早日達成和議。此時虎門每座只留炮臺僅餘數十人至百人不等，1841年1月，英國艦隊威逼虎門，琦善緊急調兵增援虎門。
作戰過程
沙角、大角、戰鬥
1841年1月7日上午8時，英軍艦隊向虎門要塞第一道門戶、沙角、大角炮臺同時發起進攻。英軍以右支隊擔任主攻，由「加略普」號等三艘軍艦和四艘輪船運載，負責進攻沙角炮臺。當三艘軍艦駛達預定水域后，立即對沙角炮臺進行炮擊。與此同時，登陸部隊在川鼻灣登岸，抄襲炮臺側后。由於守軍大部集中在炮臺及其周圍，四周要隘和山頂兵力薄弱，因此，僅僅兩小時英軍即佔領了炮臺各制高點，並安好了野戰炮，俯擊沙角炮臺。英軍馬達加斯加號、進取號、武裝輪轉在運送完登陸部隊后立即開動，參加對沙角炮臺的炮擊。復仇女神號、皇后號、在英軍佔領沙角山制高點后亦移至炮臺正面，炮擊沙角炮臺。沙角炮臺原為信炮臺，火力不濟，工事不堅，在英軍水陸夾擊下，士卒腹背受敵，傷亡甚眾。不久，英軍突擊炮臺，守臺清軍憑藉炮火抵抗，但無法抵禦居高臨下的英軍野戰炮轟擊。守軍欲發「動預埋地雷」，但未能奏效。傷亡慘重，陳連升父子相繼陣亡，沙角炮臺遂被英軍佔領。
進攻大角炮臺的英軍左支隊，主要由「薩馬蘭」號等四艘軍艦組成。它們錨泊在距大角炮臺很近的地方，用舷側炮猛烈地炮火壓制炮臺，摧毀胸墻、炮洞、圍墻多處。炮臺守軍開炮對抗，然效力有限，守軍在英軍猛烈地炮火下無法駐足。與此同時，英軍乘坐小船從南北兩側同時登陸，包抄炮臺，守軍被迫將大炮推入海內，突圍撤退，大角炮臺失陷。英軍放火燒燬營房，拆毀炮臺，然後全部撤回艦上。
在進攻沙角的同時，英國海軍向停泊在晏沉灣附近的清軍水師發起進攻，清軍戰船火力無法與英軍戰艦相抗衡，水師戰船十一余艘被擊毀，英軍從清軍水師戰船上繳獲大炮82門，其中10門是葡萄牙製造的銅炮。
沙角、大角之戰，清軍戰死227人，重傷死5人，傷462人，共計傷亡744人，英軍四十人輕重傷。在這次防禦戰斗中，清軍憑藉有利地形和要塞工事，給了進攻之英軍一定的殺傷，但由於防守兵力不足，戰術呆板，炮臺側后暴露，經不起英軍正面炮擊與側后登陸的包圍攻擊而陷入被動。當時，水師提督關天培和總兵李廷鈺等各率兵數百防守橫檔、武山各炮臺。關天培深感前線兵力單薄，派李廷鈺回廣州「哭求增兵」，全省文武亦請求派兵往援，而琦善卻以有礙「撫議」為由，按兵不動。結果坐視沙角、大角兩炮臺被英軍攻佔。
沙角、大角兩炮臺陷落後，英國軍艦隨即抵達橫檔一線，對清朝保持軍事壓力，在英軍強大的武力威懾下，琦善被迫與英方簽訂《穿鼻草約》。
三門水道戰鬥
1月27日，廣東敗報傳到北京，道光帝甚為惱怒，當即決定對英宣戰。他一面命令文華殿大學士穆彰阿等將英國侵略行徑「通諭中外知之」，一面命令兩江總督伊里布「剋日進兵，收復定海」，令琦善「激勵士卒，奮勇直前」，並令沿海各省將軍督撫「加意巡查，來則攻擊」。接著，又令御前大臣奕山為靖逆將軍，戶部尚書隆文和湖南提督楊芳為參贊大臣，前往廣東主持軍務。另從湖南、四川、貴州、江西、湖北和貴州各省調集援兵，兼程開赴廣東。2月26日，道光帝接到廣東巡撫怡良關於英國艦隊強佔香港的奏報，立即下令將琦善革職鎖拿，並查抄其全部家產。同時，補授原刑部尚書祁貢為兩廣總督，未到任前由怡良署理。道光帝著怡良等「一俟奕山、隆文到粵，即行大張撻伐，極力攻剿」。英方在獲悉清廷向廣東調兵遣將和對英宣戰的訊息后，便立即命令英軍備戰。英國軍艦開始陸續向虎門口外集結，準備進攻虎門和廣州，以先發制人。
2月18日-2月20日，英國艦隊再次抵達虎門一線，此時清軍正緊急修建防禦工事，以防備英軍再次進攻。重點在三門水道一線修築炮臺，阻塞航道。22日，英軍攔截到一艘清軍交通船，截獲的公函檔案顯示要求虎門清軍儘快完成三門水道一線的防禦工事建設，英軍遂決定「檢查通往亞娘鞋島側后的水道」。23日，英國艦隊抵近正在三門水道修建防禦工事清軍時清軍隨即開炮，英艦開火還擊，並出兵摧毀清軍炮臺。24日，英國艦隊再次駛入三門水道，毀壞了清軍在三門水道航線上設定的障礙物，並與武山炮臺清軍發生交火，開闢航道后，繼續上駛，抵達太平墟時，折向返回。
橫檔一線戰鬥
2月24日，英軍向廣東水師提督關天培發出最後通牒，要求交出炮臺。關天培對英方要求置之不理，將其廣東水師提督官印和自己的幾件舊衣服與幾枚墜齒裝入一隻木匣由家丁送走以示訣別，然後來到靖遠炮臺，坐鎮指揮，並將自己的全部財物拿出分贈給炮臺守軍，以激勵炮臺守軍士氣。
25日，英軍完成了進攻虎門的臨戰準備。此時，英軍發現下橫檔島沒有設防，遂于2月25日下午派出炮兵分隊，攜帶臼炮三門，在一百五十名步兵護衛下，由「復仇女神號」遠洋汽輪兵艦運至該島登陸，並連夜選擇陣地，安設炮位。
26日清晨，佔據下橫檔島的英軍炮兵猛烈炮擊上橫檔島，壓制橫檔、永安兩炮臺的火力。與此同時，英軍派艦船阻斷清軍增援上橫檔島的水道，另以四艘軍艦由西航道駛入，對上橫檔島形成半月形包圍，用艦炮轟擊，以掩護另外三艘大型艦船和三艘火箭船進攻東岸的南山。一個多小時後，上橫檔島守軍被壓縮于炮臺內，英軍乘勢在西端的永安炮臺附近登陸。經過激戰，守軍陣亡三百餘人，一部被俘，少數突圍撤退，上橫檔島遂被英軍佔領。
進攻南山的英艦由於風潮不順，直到上午11時半，兩艘最大的戰艦「伯蘭漢」號和「麥爾威厘」號才乘漲潮冒著炮火駛抵距南山一里左右的水域，以右舷炮向威遠、靖遠炮臺轟擊。關天培在靖遠炮臺親自督戰。不久，英軍300餘人在炮臺翼側登陸，威遠、靖遠、鎮遠三炮臺守軍在英國艦隊的猛烈轟擊下，堅持抗擊一個半小時，鎮遠臺守軍不支先潰。在靖遠炮臺指揮作戰的關天培身受重傷，仍死戰不退，最後與炮臺守軍一起陣亡。英軍攻下南山各炮臺后，用汽船拔除水中木樁，破壞鐵鏈，疏通航道，以備溯江進攻廣州。當日下午4時許，英軍另一部進攻西岸南沙山下的鞏固炮臺，炮臺守軍不戰自潰，英軍將炮臺和營房毀壞后，撤回軍艦。此役清軍500餘人戰死，1200人被俘，英軍傷亡5人。大虎山清軍在橫檔一線戰鬥失利后不久便放棄炮臺，先行撤退，虎門要塞各炮臺皆被英軍攻破。
後續戰鬥
英軍攻破虎門橫檔地區六座炮臺之後，2月27日即由「加略普」號艦長率領軍艦五艘、輪船二隻溯珠江而上，進攻離廣州僅六十里的烏涌。該處由署湖南提督祥福等率領湖南兵九百名（2月22日才趕到廣東）和廣東兵七百人駐守。由於工事尚未就緒，加之江水暴漲，炮位多沒水中，只有東南角一炮，可以射擊，但炮架笨重，土質又鬆軟，不能轉動，以致不能命中。英軍立即換乘舢板登陸，直撲炮臺。祥福等率部抗擊，用鳥槍阻擊英軍。后因火藥將盡，被迫撤退。英軍乘勢猛攻，佔領炮臺。五百餘清軍陣亡，其餘潰散，祥福被清軍自己人踩踏致死。3月2日，英軍又西陷獵德炮臺。
結局
虎門之戰，是鴉片戰爭期間最為重要的一場作戰，對當時軍事和政治局面均產生重大影響。隨著要塞失守，致使廣州失去了一道重要的防禦屏障，一時門戶大開。英國軍艦沿珠江口抵達廣州城下，使清朝在軍事和外交上陷入被動局面。