3月11日,日軍向112師古北口主陣地發動總攻,112師突前一個旅只打1小時就逃跑,防守主陣地的部隊也潰散,兵敗如山倒下沒有通知,中央軍25師的增援部隊。日軍迅速佔領古北口“一線高地”,居高臨下猛烈轟擊25師“二線陣地”。如此,中央軍關麟征的25師突前73旅,所有陣地完全成為日軍重炮靶子。
在日軍炮火轟擊下73旅,同師部和75旅聯繫中斷,日軍基本合圍了73旅,東北軍逃跑導致古北口實際已失守。如果25師守不住陣地北平危在旦夕,杜聿明和關麟征決定25師,趁日軍立足未穩全力反擊,奪回東北軍丟下的陣地,即便不成功也要恢復73旅聯繫。關麟征師長親率49團,搶佔73旅結合部高地,但還是被日軍偵察部隊搶先,並用機槍封鎖道路。
關師長情急之下帶頭衝鋒5處負傷,最後組織幾百人的敢死隊,沖上去全殲高地兩個中隊日軍。並且迅速組織反擊,擊退2千多日軍援兵,壓制住了日軍進攻勢頭,也恢復了和73旅的聯繫,古北口局勢穩定下來。但他傷勢嚴重只得退下火線,由杜聿明暫代25師師長。國軍原本計畫有5個師,5萬多人駐守古北口一線。現在東北軍107師和112師全部逃跑,中央軍援兵2個師還在路上。但日軍第8師團主力已到了,集中1萬多主力猛攻古北口。
3月12日,日軍發動3次聯隊規模的進攻,日軍火炮不停歇轟擊25師陣地,日軍飛機也連續俯衝投彈,25師倉促修建的簡易工事被毀。但中央軍士兵死戰不退,利用地形優勢拼命抵抗。如此硬頂3天25師逐漸堅持不住,3月12日日軍炮火已炸毀杜聿明指揮部,日軍殺到指揮部不足百米,杜和75旅旅長僥倖突圍成功。
25師雖屬於中央軍,但是裝備並不比地方軍閥好,趕赴前線倉促只帶少量迫擊炮。25師士兵從安徽趕到寒冷的古北口,還穿著草鞋和單衣。在零下十度的雪地中,激戰3天官兵傷亡慘重。但中央軍士兵鬥志昂揚視死如歸,在陣地上被日軍炸得血肉橫飛,但就是死戰不退一步,最後直至全體陣亡為止。
日軍打東北軍不費吹灰之力,連日本天皇都說“中國軍隊是太監軍隊”。“九一八”和“熱河抗戰”,張學良得東北軍“慫兵熊將”不戰而逃。但日軍在上海和華北打了“一二八”和“長城古北口”後,內部對中國軍隊看法完全改變,認為中國的“好部隊”如中央軍等,打仗極為英勇頑強不好對付。
激戰數日中日軍隊傷亡都很大,25師從師長到營長大多重傷,連排長都快打光了。三天激戰中央軍25師傷亡過半,陣地被日軍攻陷多處。杜聿明為免全軍覆沒,將部隊撤到險要的古北口,南部的“南天門陣地”,此地由剛趕來的黃傑第2師暫時駐守,第25師殘部到北平一帶修整。
南天門一帶地形非常險要,日軍大部隊施展不開,期間不斷以連排部隊偷襲,雙方對峙了一個月之久。何應欽中央炮兵第4團趕赴南天門支援,4月21日,西北軍,東北軍,晉軍防守的長城各口都被日軍攻陷。日軍參謀本部命令務必攻陷,國軍控制的最後關隘“南天門”。日軍為此集中了3萬人,以千人為單位徹夜不停進攻。
重點是南天門中央“421高地”,日軍密集衝鋒佔領陣地,中央軍反衝擊再奪回,然後日軍再衝鋒,中央軍再反擊,雙方激戰無數次屍體堆積如山。激戰5天后日軍16旅團傷亡慘重,居然把彈藥都打光,沒法繼續進攻。日軍第八師團急調第4旅團增援,25日開始日軍大炮24小時轟擊國軍陣地,第2師傷亡慘重下由劉戡第83師接替。
雙方連日苦戰日軍都感到兵力不足,從第6師團抽調6千部隊增援,總兵力達到2萬人又打3天,南天門陣地被日軍炮火全部摧毀。83師後退到南天門6百米後的“二線陣地”。日軍從3月21日打到4月28日,一個多月在南天門僅前進6百米。南天門中央軍第2師和第83師傷亡4千多人,日軍傷亡2千多人。
但長城其他關隘如喜峰口,冷口都已被日軍攻陷,再固守南天門沒有意義。5月10日,第八師團在增援部隊到位下,再攻擊南天門二線陣地,中央軍退守後方“新開嶺陣地”,然後再撤到“密雲防線”,協助增援的中央軍26軍防守北平外圍。此時,何應欽中央軍17軍,3個師苦戰2個多月傷亡慘重,中央急調蕭之楚的第26軍前來支援。
中央軍第17軍殘兵和中央軍第26軍一個師,4月28日退守南天門二線陣地後,在無險可守的華北平原地帶,仍然堅持了大半個月,5月19日密雲被日軍攻陷。第17軍退往北平附近修整,陣地由中央軍26軍接替。日軍打了3個多月不斷增補部隊,但戰鬥力耗損下越打越吃力,為此又不能從國內再徵調部隊,如此也只好停止進攻。
何應欽急調傅作義59軍駐守,密雲後方懷柔一線,蔣介石怕北平有失,把中央軍絕對主力,精銳全德械第87,88師,還有西北軍楊虎城42師都調來支援,國軍在長城一線集中了11個師。此時,日軍也是強弩之末,於是雙方決定展開談判,日軍為獲得談判桌上優勢,下令第八師團猛攻懷柔威懾北平。