土木堡之戰,亦稱土木堡之變、土木之禍,指發生於明朝正統十四年明英宗朱祁鎮北征瓦剌的兵敗事變。土木堡坐落於居庸關至大同長城一線的內側,是長城防禦系統組成部分。
1449年的土木堡之戰,是明朝中央軍隊第一次發生的一場失敗戰役。除了軍事指揮錯誤的直接原因外,與長期以來明朝北方邊防被破壞有密切關係,是北方邊防廢弛的必然結果。
明朝建立後,元朝殘餘勢力敗退漠北,明太祖朱元璋修長城,設邊鎮,置衛所,有效地鞏固了北部邊防。成祖朱棣稱帝後,抑制蒙古軍事力量的發展。
永樂十九年,遷都北京後,撤銷塞北軍事重鎮大寧、開平諸衛,使北部防線南移數百里。蒙古貴族乘機擴展勢力,分為瓦剌、韃靼、兀良哈三大部,互爭雄長。正統四年,瓦剌部首領也先嗣位,用武力迫使諸部服屬。同時,表面與明朝互通貢市,請求通婚,以保和好;暗中刺探明朝虛實,尋機舉兵,圖謀恢復元朝統治。明朝北邊守將察知瓦剌軍蓄謀南攻,多次奏疏加強戒備,以防不虞。而太監王振操縱朝中大權,竭力粉飾太平,致使北部邊備日懈。
正統十四年七月,也先以為攻明時機成熟,以明廷刁難其貢使和毀棄婚約為由,傾全力分四路大舉攻明。命脫脫不花可汗率東路攻遼東,阿剌知院率中路攻宣府,另遣一部為西路,攻甘州,自率精騎攻大同。十一日,也先率師進至貓兒庄,擊殺大同參將吳浩。明廷聞敗,命大同總督宋瑛、駙馬都尉井源、總兵朱冕和左參將石亨各領兵萬人出陽和口抵禦。王振欲圖邊功,竭力慫恿英宗親征,企圖以勢嚇退瓦剌軍。卜五日,英宗拒聽兵部尚書鄺埜、左侍郎于謙和吏部尚書王直等文武重臣再三諫阻,下令親征,並命其弟郕王朱祁鈺留守京師。同日,陽和口之戰,明軍又敗,宋瑛、井源、朱冕戰死,石亨敗逃大同,塞北城堡接連失陷。與此同時,阿刺部攻獨石,破永寧城,進逼居庸關。脫脫不花部圍攻鎮靜堡,遭明軍抗擊,撤圍而去。
十六日,英宗和王振倉促率領大軍號稱50萬前往大同迎戰。十九日,在進軍途中,鄺埜等群臣屢請回師,均遭拒絕。廿三日,至宣府。廿四日,也先偵知明軍主力出征,且行陣如蟻,首尾難顧,遂佯裝畏懼,主動北撤,隱伏塞外,縱明軍兵驕,尋機待戰。廿八日,明軍至陽和,目睹屍橫遍野,將士驚恐。八月初一,師至大同,王振不見瓦剌軍蹤影,急欲北進,炫耀兵威。這時,鎮守大同的太監郭敬密報王振,瓦剌兵勢甚銳,且大同以北各地明軍慘敗,若繼續北行,正中其計。王振遂定回師,命劉安為大同總兵、郭登為參將,鎮守大同,掩護主力東撤。初三,明軍開始按既定路線由蔚州經紫荊關返京師。軍行40里,王振擅改行軍路線,令全軍折向宣府,經居庸關而返。將士輾轉宣府、大同間,饑渴疲憊。也先察知明軍易道北行,指揮混亂,斷定並非用計,立即改變設伏之策,發揮蒙古騎兵倏來忽往、靈活機動的特點,揮師突入長城,跟蹤追擊。十三日,追至宣府西側,一舉擊敗明軍後衛吳克忠、吳克勤部。聞明成國公朱勇和永順伯薛綬領兵4萬來援,又迅速轉兵,在明援軍必經之地鷂兒嶺設伏待機。
十四日下午,明軍主力退至四面環山、水源缺乏的土木堡。其地道路不良,大軍機動困難。王振以輜重未至,下令大軍紮營等候。鄺埜認為追兵不舍,形勢危急,多次建議大軍速入懷來衛城,均被王振拒絕。鄺埜面見英宗,奏請車駕疾驅入懷來,以保安全。王振怒斥鄺埜不知兵事,強令大軍紮營。當晚,瓦剌軍佔領土木堡西北、西南要地,控制了堡南的唯一水源,對明軍形成包圍之勢。十五日,也先遣使議和,行佯退之計,麻痹明軍。明軍斷水二日,兵馬饑渴難熬。英宗和王振急欲擺脫困境,遂遣使往瓦剌軍營議和。王振下令全軍移營覓水,人馬爭路,相互踐踏,陣勢大亂。也先乘機指揮精騎從四面入陣。明軍驚恐,指揮失靈,加之臨陣配發火器,不熟悉性能,未經幾戰即全軍大潰,死傷數十萬。英宗被俘,隨征將臣張輔、鄺埜等50餘人陣歿,王振被護衛將錘殺。史稱「土木之變」。
此戰,明軍大軍麇集,輾轉於宣府、大同間,致將士疲憊;紮營於群山之中,不便機動;且輕信議和,鬆懈戒備,導致大敗,使明王朝一度危急。