日军的作战意图是要以长城为界重划“满洲国”的版图。在热河、河北之交的长城沿线的古北口、喜峰口、罗文峪、马兰峪等隘口,是热河通往河北和平津的咽喉,地形险要,易守难攻。只有攻占以上诸点,才能确保扩大伪满版图战略意图的实现。所以,1933年2月10日,日本关东军在下达进攻热河的命令时,就要求所部不失时机地占领界岭口、冷口、喜峰口、古北口、罗文峪、马兰峪等长城主要隘口。日军占领承德后,即分兵向长城各口推进。至1933年3月上旬,各路日军已先后抵达长城各主要关口附近,与中国由热河退至宽城以南地区的第4军团、北口地区的第6军团等部形成对峙。
面对日本人逼人的攻势,北平军分会代委员长何应钦,秉承蒋介石“一面抵抗,一面交涉”的既定政策,沿长城线布防,企图阻止日军前进。其部署是:以第1军团于学忠部所属第51军防守天津、大沽及警备津浦铁路;以第2军团商震部所属第32军、第57军担任滦河以东和冷口附近的防务;以第4军团万福麟部所属第53军在原驻地整理,并以3个师协助第57军固守冷口以东长城要隘;以第3军团宋哲元部所属第29军和第40军负责喜峰口、马兰峪方向之防御;以第8军团杨杰部所属第17军、第26军和第67军,担任古北口方面作战;以第6军团张作相部所属第41军和第7军团傅作义部所属第59军及骑兵第1军,担任察东的防务。原由退入热河的义勇军改编的第6军团第63军冯占海部大部被裁减和整编;原第5军团汤玉麟部于热河溃败后,残部退至察东沽源一带。以上合计7个军团,一个军(含骑兵军一),36个师(含骑兵师六),15个旅(含骑兵旅二,炮兵旅三),及各军师直属部队,共约25万人。
战斗首先在长城东段各隘口打响。退至长城附近的东北部队在华北部队的支援下,在主要关口与进攻的日军展开了激烈的争夺战。
在冷口方向,商震派第139师到第一线作战,其余两个师和军部驻在远离长城线的开平。1933年3月4日,日军混成第14旅先遣队侵入冷口。3月6日,第139师反攻并收复了冷口。接着该师调整部署,加强了冷口北部的防御阵地。3月19日以后,日军再次猛攻冷口北部139师阵地。该师与敌苦战,并不时组织反击。经过反复争夺,终将日军逐至口外十余公里的马道沟、肖家营子一带地区,并对峙至月底。
界岭口为第4军团第116师缪澄流部防地。1933年3月12日,日军混成第33旅由绥中进到界岭口附近后,16日拂晓开始攻击。守军第116师稍事抵抗后即后撤,日军追至长城内郭家厂、石家沟一带,而后退守界岭口。17日,第116师组织反击,占领了界岭口两侧长城上的敌楼,并从正面迫近敌人。日军混成第33旅于24日拂晓复攻界岭口,守军再度后撤,日军又进到郭家厂和468高地一线,然后再退回长城沿线。此后,两军处于相持状态。
喜峰口、罗文峪系平东通往热东的交通孔道,群峰耸立,地形险要。按照北平军分会的部署,第29军宋哲元部担任城岭子口,经董家口、喜峰口、罗文峪至马兰峪之线的防御任务。该部令第37师以三屯营为中心,防守城岭子至潘家口一线;令第38师以遵化为中心,防守龙井关至马兰峪一线;令暂编第2师由玉田向平安镇及东新庄镇集结待命。1933年3月9日下午,第29军先头部队刚到喜峰口,日军混成第14旅一部追击万福麟部至此,并占领了口门。第29军立即以一个团投入战斗,才暂时稳住了口上的战局。
3月10日晨,第29军主力先后到达滦阳城(今迁西西北)。此时,防守喜峰口的万福麟部正在日军混成第14旅主力压迫下后撤。第29军立即接防喜峰口,并阻击进犯的日军。10至11日,第29军与进攻喜峰口两侧阵地的日军展开肉搏战,几处高地,失而复得,来回拉锯,争夺激烈。由于该军士兵手持大刀与日军短兵相接,胶着成一团,日军的飞机、火炮无法发挥作用,双方伤亡惨重。日军混成第14旅首次遇到劲敌,遂以一部确保喜峰口,主力则集中在长城北侧待机。11日夜间,第 29军决定乘日军疲惫之际,采取迂回夜袭战术打击敌人。赵登禹旅长(带伤)率两个团为一路,从左翼出潘家口,绕至敌右侧背,攻击喜峰口西侧高地之日军;佟泽光旅长率另外两个团为另一路,从右翼经铁门关出董家口,绕攻敌左侧背,攻击喜峰口东侧高地之日军;王治邦旅长担任正面防御,待左右两路打响后,即从正面出击。当夜,赵旅官兵身背大刀,在夜色中踏雪前进。12日拂晓,分别抵达北山土、三家子日军骑兵阵地和蔡家峪、白台子日军炮兵阵地。官兵们趁日军熟睡之机,手持大刀猛砍、猛杀,并将日军阵地的火炮、辎重和粮秣炸毁、烧尽。驻老婆山日军闻讯后,立即赶来救援,双方在夜色中混战。这时,从右翼出击的佟泽光旅赶来增援,担任正面策应任务的王治邦旅也开始猛攻喜峰口东北高地。在赵、佟二旅合击下,终于将日军击退。夜袭部队由原路胜利返回。此战毙伤日军六七百人,打死日军植田支队长,破坏野炮18门;29军亦伤亡副团长以下军官14人。
日军在喜峰口受挫后,急调第8师步兵第4旅和骑兵第3旅各一部,在部分伪军的协同下,向罗文峪发动进攻,企图威胁第29军喜峰口阵地的左后方。防守该处的是第29军暂编第2师刘汝明部。3月16日拂晓,日军企图夺取罗文峪之三岔口高地,守军以一个团跑步绕出黄崖口,截击敌人,将其击退。17日8时,日军在飞机和炮兵支援下,大举进攻罗文峪、山渣峪和沙宝峪。守军诱敌迫近,肉搏冲锋,战斗竟日,日军向鹰手营子退去。18日晨,日军再次猛攻上述阵地。守军依托城墙、碉楼,顽强抵抗。日军在猛烈炮火的支援下,反复向守军冲击。战士们待日军接近时,抽出大刀,跃出阵地与敌肉搏,战至傍晚,将其击退。是夜,守军以一个团由沙宝峪绕攻日军侧背,另一个团由左翼绕攻其后,正面守军也全线出击。战至天明,日军撤至梅花峪、古山子一带。至此,罗文峪北5公里内,已无敌踪。
喜峰口、罗文峪战斗,打出了中国军队的威风,“振奋了全国的人心”,“大刀队的威名几乎把现代化的精良火器都掩盖了”。日本报纸也评论说,日军这次失败丧尽了“皇军名誉”。
古北口是由承德到北平最近的关口,为平北之门户,地势险要,易守难攻。1933年3月4日,日军占领承德后,即以第8师主力向古北口方向追击。东北军王以哲部第107师在古北口外的老虎山和黄上梁一带,与追击日军激战两昼夜后于3月9日撤至关内。王以哲急调第112师沿长城以北布防,并准备与中央军第17军共同防御古北口。此时尾追第107师的日军已进抵长城附近。第17军第25师关麟征部于3月10日4时抵达古北口。王以哲即令第112师防御古北口长城第一线;令第25师占领古北口南城东西两侧高地,并向前延伸,是为第二道防线。第25师受领任务后,即以第73旅占领古北口南城东西两侧高地及龙儿峪阵地,并加紧构筑工事。
10日15时,笫25师刚部署完毕,日军第8师一部即在炮火掩护下,作宽正面的试探性进攻。数小时后退回原线。第25师连夜调整部署,令第73旅加强龙儿峪之线,令第75旅(欠一个团)集结于古北口东北地域,准备迎击日军的大规模进攻。11日拂晓,日军第8师主力在炮兵火力掩护下,开始向守军发起进攻。防守古北口正面的第112师未尽力抵抗即放弃了第一线阵地,日军迅速占领古北关口,并乘胜向守军第25师右翼龙儿峪阵地包围攻击。驻守该地的第73旅伤亡严重,联络中断。师长关麟征指挥第75旅主力驰援该团,将敌击退,并恢复了联系。12日晨5时许,日军在飞机和火炮的支援下,对守军阵地再次发起攻击。主力指向龙儿峪阵地,并以大部兵力向右翼延伸包围,战况更为激烈。战至 15时,守军大部不支,被迫后撤。12日夜,撤下的第25师部队重新整理后,在南天门及其左右占领阵地。13日,第17军令第25师撤至密云整补,其防务由第2师接替,继续与日军周旋。
日军进攻长城受阻后,遂改取侧后包抄战术,在长城东段南侧的滦东和南天门交替发动进攻,威胁中国守军的侧背,长城战役进入了第二阶段。
3月27日,日本关东军发布第491号命令,决定“军主力重新转向积极作战”,越过长城线,向滦东地区进攻。
3月31日晨4时,日军砂田部队和岩田支队在伪靖安军的配合下,由九门口、义院口向石门寨进犯。4月1日,日军占领石门寨。守军何柱国部退守海阳、秦皇岛。4月6日,何应钦调第67军王以哲部由平北东进,支援滦东国民党军作战。4月9日,日军第6师主力在混成第14、第33旅各一部配合下,连续猛攻冷口。至11日,商震部防线被突破,全军退至滦河右岸,日军占领建昌营和迂安。由于冷口失陷,冷口两侧的中国守军腹背受到威胁,被迫后撤。4月11~14日,在日军分路猛烈进攻下,驻守界岭口之第53军杨正治部和驻守喜峰口的宋哲元部以及何柱国部和王以哲部,均先后奉命向滦西撤退。日军跟踪追击,至17日,全部占领了滦东地区。
日军越过长城,占领滦东,威胁开滦煤矿,损害了英国的利益,英国遂向日本提出警告。日本天皇唯恐越过长城线引起国际纠纷,于4月19日责成参谋副总长真崎甚三郎令关东军撤出滦东。4月20日,关东军密令第6师于21日前逐次从滦东撤回长城线,但仍“要保持威胁华北反抗势力的态势”。
日军入侵滦东的目的除了迂回中国守军侧背、突破长城线外,就是策应华北的策反工作。早在关东军开始进攻热河时,沈阳特务机关长板垣征四郎即奉东京参谋部密令,担任华北策动国民党政府内变的工作。板垣到天津后立即组织了特务机关,直接受东京参谋部指挥。在热河、长城抗战期间,板垣曾先后策动段祺瑞、吴佩孚和孙传芳等北洋军阀老人,但都未得手。最后才选定了早年任过湖南督军的张敬尧以及郝鹏举、石友三等人。张特别受到板垣的赏识,并得到银元30万。4月18日,板垣密电关东军称:张敬尧准备4月21日在北平起事,请关东军加紧向南进攻,以策应张之内变(张后被暗杀,计划落空)。
就在日本军方表示不再越过长城线的同时,关东军为配合板垣的策反行动,暗自命令第8师采取一切手段“对古北口以南地区之敌进行攻击”。14月20日夜,日军第8师攻占了南天门左侧制高点八道楼子。中国守军第2师曾组织几次反攻,均未奏效。23日至25日,日军利用八道楼子瞰制的有利条件,以陆空协同向南天门阵地中央据点421高地数次发动猛攻,但均被第2师击退。由于连日苦战,第2师伤亡严重,其防御阵地由第83师接替。26日拂晓,日军在飞机、火炮支援下,继续向421主阵地猛攻。第83师战至下午,因伤亡过大,遂将该主阵地放弃。28日 5时,日军乘势再向南天门右侧高地进攻。第83师激战竟日后,即奉命向新开岭转移,南天门被日军完全占领。为策应古北口之战,中国方面曾以北上的中央军第26军萧之楚部(由第44师扩编而成),于4月27日向兴隆出击,后因新开岭战斗告急而撤出。与此同时,日军还纠集伪军刘桂堂、李寿山、崔兴武等部万余人,进犯察东多伦。守军骑兵第1军赵承绶部被迫于4月28日退往沽源。
此时,板垣征四郎策划的一系列策反行动全部泡汤。
根据关东军司令官的命令,日军第6、第8师于5月上旬再次越过长城,从东、西两线向关内冀东地区发动大规模进攻,长城战役进入了第三阶段。5月7日,东线日军第6师所属各部,分别从山海关、石门寨、抬头营、建昌营等地出发,在飞机、坦克、火炮掩护下,分数路向4月下旬日军撤出滦东后返回该地区的中国守军发动攻击:一路沿平榆公路西攻抚宁,一路由界岭口附近向五达营前进,一路由建昌营直扑迁安。5月9日,日军凭借优势火力,占领了抚宁、迁安、卢龙等地,然后集结于建昌营、吴庄附近地区,准备渡过滦河西进。中国守军何柱国、王以哲部西撤,滦东再次失陷。5月12日,日军第6师及混成第14旅分别渡过滦河后,即以主力向丰润追击;以一部向遵化前进;以伪军5000人攻滦县。13日,第4军团总指挥万福麟令何柱国、王以哲部向唐山、丰润以西之线撤退。日军跟踪追击。15日,何应钦令万福麟、何柱国、王以哲部撤至宁河、宝坻一线;宋哲元部撤至三河、平谷以东地区。当日,日军得到中国守军向西撤退的情报后,即令第8师“不要迟疑,继续攻击”;令第6师占领丰润、遵化后,迫使中国守军西退。17日,日军又决定“扫荡”密云、平谷、蓟运河以东的中国军队。由于中国守军节节撤退,进攻滦西的日军如入无人之地。至22日,日军相继占领滦县、遵化、玉田、平谷、蓟县、三河等县城。日军第6师全部推进到蓟运河一线。
在西线的日军第8师主力亦于5月10日向新开岭地区的中国守军第17军发动攻击。该军第83师和第2师轮番与日军激战。至13日,第17军奉命经密云向怀柔和顺义以西之线撤退。日军尾追其后,于19日占领密云城。正当日军向怀柔、顺义追击的时候,中国守军第59军傅作义部,由昌平侧击怀柔、顺义两地区的日军未果,乃退守该两县以北地区。
日军为了以更苛刻的条件逼迫北平当局与之缔结城下之盟,于5月20日决定加紧追击中国守军。22日,中国守军奉命退至平津城郊组织防御。至23、24日,日军第6、第8师各一部突破三河、宁河防线,陷香河、怀柔、宁河后,进逼通县、顺义,对北平形成了三面包围之势。北平城内一片混乱。华北军事当局也准备南逃保定。此时,日本政府认为停战的有利时机已到,遂提出举行谈判,国民党政府心甘屈辱妥协,接受日方条件,于5月25日开始停战,长城战役遂告结束。