于谦下令“悉闭诸城门”,以示背城死战的决心。于谦还下令:“临阵,将不顾军先退者,斩其将;军不顺将先退者,后队斩前队。”
十月十一日,瓦剌军抵达北京城下,列阵西直门外,把英宗置于德胜门外空房内,企图迫使明军献城。于谦暂隐主力,采用小部兵力处处袭击,搅乱敌军。当天晚上,高礼、毛福寿在彰义门北迎击瓦剌军,杀敌数百人,军威大振,迫使瓦剌军不敢贸然进攻。也先采纳喜宁的建议,借议和诱于谦等人前往迎驾,乘机擒获,明军将无而溃。于谦一方面派王复、赵荣去瓦剌军营进见英宗,另一方面针对朝廷有些人想议和的心理提出现在只管备战,其他一概不闻。也先议和的阴谋没有得逞。
十三日,也先集中主力进攻德胜门。于谦早料到瓦剌军可能要从这里进攻,就派石亨预先埋伏于德胜门外道路两旁的空房中,明军只派少量精骑迎战瓦剌军,接战后,佯装败退。瓦剌军以万余骑追来。待瓦剌军进入明军伏击圈时,范广出其不意,指挥神机营突火炮、火铳,同时,石亨所领伏兵突起夹攻。瓦剌军大败,有“铁元帅”之称的也先的弟弟孛罗和平章卯那孩都中炮身亡。瓦剌军又转攻西直门,明守将都督孙镗率师迎战。战斗打得十分激烈,明军斩敌前锋数人,迫其北退,孙镗又率军追击。瓦剌军合围孙镗,孙镗尽力拼杀,一度退到城边。幸高礼、毛福寿和石亨率兵前来增援,瓦剌军三面受敌,被迫退去。
瓦剌军在德胜门和西直门受挫后,又在彰义门动进攻。于谦命武兴、王敬、王勇率军迎战瓦剌军。明军神铳、弓矢、短兵前后相继,挫败了敌军的前锋。但明军自己也乱了方阵,瓦剌军乘机反击,明军败退,武兴中流矢死。瓦剌军追到土城,土城一带的居民掷砖投石,阻遏了瓦剌军的进攻。明援军赶到,瓦剌军仓皇逃走。
而进攻居庸关的5万瓦剌军,因天气寒冷,明守将罗通汲水灌城,墙壁结冰,瓦剌军无法进攻。经过7天的战斗,瓦剌军的进攻均被击退。罗通三次出关追击,斩敌无数。也先又听说明援军将集,恐断其归路,遂于十月十五日夜下令北退。于谦命明军乘胜追击,二十四日、二十五日明军在霸州(今河北霸县)、固安等地大败瓦剌军。至十一月初八日,瓦剌军退出塞外,京师解围。京师保卫战取得了辉煌的胜利。
明军巧妙运用多层设防、背城决战、机动作战、要点防御等不同的作战样式,击败了自恃强大的瓦剌军,稳固了明王朝的统治,创造了中国战争史上城市防御作战的经典战例。多层设防是这次战争的精彩体现。