日军占领山海关、承德后,中国军队退守义院口、界岭口、青山口、喜峰口、铁门关、罗文峪、冷口、古北口、多伦、张家口等100多个长城关口,战线长达1000多里,中国先后投入总兵力达35万多人。3月5日,日军开始分兵进犯长城各口,遭到中国驻军的顽强抵抗,展开了长达80多天的激烈的阵地争夺战。随即日军各部即按命令向长城一线推进,长城沿线的古北口、喜峰口、罗文峪、马兰峪等隘口成了通往华北平津的最后天然防线,震动中外的长城抗战开始了。
长城抗战首先在冷口打响。3月4日,承德弃守当天,日军混成第14旅的米山先遣队就占领了冷口。受命前往冷口接防的第 32军商震部急调其第139师于6日反攻,收复冷口,并乘胜追出口外15公里,拒敌于肖家营子、马道沟一线,冷口初战告捷。
3月 6日以后,日军调集两个师团、两个独立旅团的兵力,在空军配合下,向古北口以东长城各隘口轮番进攻。蒋介石为缓和舆论,急调13个军30多个师的兵力沿长城线布防。第29军受命防守喜峰口至罗文峪一线,经几日苦战,遏止了日军攻势;11日夜,前敌总指挥赵登禹乘大雪,亲率部队袭击敌后炮兵阵地,用大刀砍杀日军数百人,从此,第29军大刀队威名四扬。
3月9日,日军混成第14旅一部追击溃退的万福麟部到达喜峰口。10日,刚刚赶到喜峰口接防的中国第29军张自忠师与进攻喜峰口西侧阵地的日军展开了激烈的拉锯战。日军首次遇到劲敌,遂以一部确保喜峰口,主力集中在长城北侧待机。11日夜,第29军乘日军疲惫、疏于戒备之机,派出4个团偷袭日军成功,重创日军。这是日军发动热河作战以来的首次受挫,关东军司令官武滕信义火速调兵增援,并将作战重点转向罗文峪,企图从侧后攻击喜峰口以西的中国守军阵地。
3月16日拂晓,日军3000余人企图趁中国守军不备之机,夺取罗文峪之三岔口高地。第29军暂编第2师刘汝明部,负责扼守这一带要隘。刘汝明命1个团跑步绕出黄崖口,截击日军,将其击退。17至18日,日军对罗文峪、山渣峪等阵地连续发动两次大规模的进攻,中国守军同日军展开肉搏战,“拔刀冲入敌阵,砍杀无算”,将快活林、三岔口、古山子、马道沟之敌完全肃清,罗文峪北5公里以内已无敌踪。由500壮士组成大刀队于夜间潜登日军阵地,砍毙大量日军,大刀队亦多数壮烈牺牲,仅生还20多人。喜峰口、罗文峪阻击战的胜利,振奋了全国人心,打击了日军的嚣张气焰。7个昼夜,日军多次强攻,伤亡达3000多人,终未得逞,不得不暂时后撤。喜峰口一役使日本国内大哗,日本各报刊登了这一惨败的消息,称此役“使日本皇军遭到奇耻大辱。”最恼怒的当属关东军司令武藤信义大将。他在给长城前线指挥官坂本中将电报中训斥道:“喜峰口一役,丧尽皇军威名!”
在进攻喜峰口的同时,3月11日,日军第8师及骑兵第3旅向长城古北口发动了强大攻势。防守古北口正面的东北军第112师未尽力抵抗即放弃了第一线阵地,日军迅速占领古北关口,并乘胜向守军第17军第25师关麟征部右翼龙门峪阵地包围。师长关麟征指挥第75旅主力将敌击退,并恢复了联系。但是,由于第25师是2月下旬匆匆由江南徐淮北调,集中甫毕,即仓卒应战。除迫击炮外,山野炮全无,仅以4个步兵团的兵力,独当优势精锐之敌,激战3昼夜伤亡极大。中国军队伤亡达4000多人,日军为此也付出了2000人伤亡的代价。日军也称此役为“激战中的激战”。不得不撤出古北口,于12日退守南天门,与日军形成对峙状态。
到3月底以后,长城抗战的形势开始逆转。3月27日,日本关东军发布第491号命令,决定军主力重新转向积极作战,越过长城线,向滦东地区进攻。根据这一计划,日军将主力集中冷口方向。在长城六大口中,冷口居于长城的凹部,它关系着滦河中下游中国军队各防地的安危。假若日军占据了冷口,既可以威胁滦东中国守军的侧翼,又将陷冷口以西各口中国守军于腹背受敌的境地。中国商震部黄光华师也与日军拼死血战,夺回被日军占领的关口阵地。日军占领长城各隘口的目地未能达到。3月27日,武藤信义下达向滦东地区进攻的命令后,占领义院口的日军混成第33旅团协同新增加的第6师团一部兵力,首先于4月1日向滦东发起进攻,先后攻占了石门寨和海阳镇。守军何柱国部退守秦皇岛。4月11日日军攻占冷口、建昌营和迁安后,滦河以西守军的侧背受到威胁。为避免腹背受敌,宋哲元第29军、商震第 32军、何柱国第57军和第53军之杨正治部,只得撤到滦河西岸,沿滦河布防。第6师团展开追击,先后攻占滦东的卢龙、抚宁、昌黎各县。滦河以东、长城以南全部被日军占领。
进犯冷口的日军是第6师主力,另有混成旅第14旅和第33旅各一部配合,总计兵力达3万人左右。中国冷口守军仅有第32军之第139师,与优势日军相比,兵力悬殊,且战线过长,分兵把口。4月9日,阵地被突破,全军退至滦河右岸,冷口及附近各关口全部失陷。由于冷口失陷,使喜峰口腹背受敌,第29军被迫放弃喜峰口,奉命向滦西撤退。4月21日,日军第8师又向南天门发动进攻,中国第17军所属3个师,轮番上阵抵抗,经8昼夜血战,守军始撤出阵地,南天门遂告失陷。
4月初,日军占领滦东后,再次向长城各口发起强攻。经月余浴血战斗,4月11日,由于冷口守军伤亡过大,冷口弃守;冷口的失守,使喜峰口守军腹背受敌,29日奉命撤退;从日军撤出滦东后,在古北口争取行动。4月20日深夜,日军开始猛攻古北口以南的南天门中国军队防线,守军黄杰第二师等轮番上阵抵御,与日军血战八昼夜,至26日夜,日军以伤亡5000人的代价迫使守军后撤600米,守军也有3000多将士伤亡。古北口方向战斗尤为激烈,担任阻击任务的第17军3个师交替上阵,浴血奋战,坚守两个月,到5月中旬,终因伤亡过重,撤出战斗。