包头战役，是1939年中国国民政府军在第八战区发动的冬季攻势中的首场战役。战役以拖延日军南下为目的，于12月17日展开包头城的外围战斗，并于随后对包头城展开围攻，期间一度攻下大半座城池，但最终由于日军增援兵力赶到，同时吸引日军注意的目的已经达到，中国军队选择主动撤出，并为随后展开的绥西战役奠定基础。
战役背景
为配合其他战区的作战，拖延华北日军南下进展，傅作义决定展开此次会战。
参战军队
日军方面
日军于1937年12月开始组建“驻蒙兵团”，并于1938年1月8日编成。此外，直接驻扎在包头的部队有日军的驻蒙兵团的一个骑兵集团司令部，集团长为小岛吉臧中将。司令部直辖熊川长治中佐指挥的骑炮兵联队，另有一个骑兵中队，一个独立战车队，一个速射炮部队，并附带指挥两个蒙古军师以及百余名宪兵和间谍。在固阳还驻扎着大贺茂骑兵旅团和蒙古军第8师。
1939年，日军找来王英组织了一支“绥西自治联军”，以王英为上将总司令，下辖陈秉义、王栓子、常子仪等三个骑兵师，驻扎在包头以西中滩地区公庙子一带。
国府军方面
国民政府军在此战中的主要部队为傅作义自太原会战之后撤回的35军。在此之前的三十五军成立了第73师和第101师，后经改编，第73师返回山西，扩编至新编第31、第32两个师。
此外，当地归傅作义管辖的部队还有第81军、骑兵第6军、以及新骑3师、新骑4师、新5旅、新6旅、绥远游击军等。
战役经过
开始阶段
对于这场战役，傅作义所做出的部署如下：
12月17日，骑兵第6军在军长门炳岳的率领下渡过了马七渡，并歼灭了东、西老藏营子一带的伪军，破坏了附近的铁路。18日，骑6军在二十四顷地与日军发生战斗。19日又在夜间偷袭驻扎在萨拉齐县的日军。与此同时，第81军也按照相应的计划行事。18日下午，傅作义派遣参谋主任两次王兴中校和参谋靳书科上尉前往联络新31师，传达了确定在19日夜开始行动的命令。
日军集团长小岛吉臧在得知国军骑兵第6军的动向后，于12月19日深夜派遣以熊川长治为指挥官的骑兵集团大部分部队组成熊川讨伐队，以5辆战车为前锋，出城迎击骑兵第6军。12月20日凌晨时分，熊川讨伐队已远离包头城之后，由第93团团附冯梓中校率领的新31师第93团第2、第3营，已于19日夜绕过了包头城外由伪军控制的碉堡群和铁丝网，进抵包头城东北角。20日凌晨时分，第93团团长安春山上校率领的团部与第1营也在当地青年王友良的指引下进抵包头城西北门。安春山在进至西北门时发现，城墙上仅有几名蒙古军士兵巡逻，于是他当即放弃了原有计划，改为利用包头城西北角最易攀爬的地点“水巴洞”率先攻城。
安春山在得到进攻指令后命令所属第1营第1连首先通过外壕向城墙架设云梯。当攻城部队开始攀爬城墙时，守城的两名蒙古军士兵发现了进攻中的国军。随即这两名守城士兵直接投降，这使攻城部队无伤亡的登上城墙。在两名投降的蒙古军士兵所提供信息的帮助下，攻城部队迅对驻扎在西北门的日军发动攻击，一举歼灭守门日军20余人，夺取西北门。西北门的战斗惊醒了正在熟睡的日方守军，他们立即占据城内各个碉堡开始抵抗。同时一驻守城外西营盘的蒙古军也开始对西北门发动攻击，试图夹击第93团第1营，但被第1营第1连连长姚德增上尉率领的一个班阻截在了城外。而驻守城外先令营的蒙古军主动派人联系第93团，表示不想卷入战斗，并主动送给第93团弹药20箱。此举免去了第93团腹背受敌的危险,也使团长安春山集中第93团第1营主力迅速攻占了日军弹药补给仓库。
在第93团夺取西北门的同时，已经在城北集结完毕的新31师第91团与五临警备旅第1团、城东北的第93团两个营也先后对包头城展开了进攻。炮兵则在攻城副指挥官刘振蘅少将的指挥下，于黄草洼附近占领阵地，并将师指挥所设在了黄草洼。五临警备第1团在团附梁伴池少校的率领下最先攻入城内，随后第91团主力亦在接受驻北营盘的伪蒙军投降后，跟随五临警备第1团之后入城拓展阵地。到了中午时分，第91团第1营的2个连在连长崔建新上尉、令狐理上尉的率领下也攻进了城内。由第93团团附冯梓中校率领的两个营则因为城外退水壕过宽，而且与驻留城外之伪军发生战斗而胶着于东北角，未能入城。
日军反击
当时城内的日军对攻入的中国军队一无所知，其骑兵集团司令小岛显得十分惊慌。但因攻城各部未能密切配合，以致攻击时间不一，攻势不猛，使城内日军逐渐恢复镇定，组织力量开始抵抗。首先进城的仅第93团1个营，另2个营被阻在城外，与团部失去联系。五临警备第1团与第91团团长都没有亲自进城指挥作战，使得日军得以进入碉堡，以火力阻击中国军队的进攻。就在新31师各部发起攻城战斗时，日军骑兵集团司令部与驻张家口的驻蒙军司令部取得了联系，但是当司令官冈部直三郎中将问及是否需要增援时，骑兵集团的回复是已通知驻萨县的骑兵第1旅团增援，不必排遣其余援军。
12月20日上午10时，由于攻城各部进展不一，而且有的部队并未突破城墙，加之配属作战的五临警备第1团不熟悉第35军的指挥体系，于是新31师师长孙兰峰少将为统一攻城部队的指挥，命令副师长王雷震少将为前敌指挥官入城指挥作战。而王副师长在得到命令后并未入城，只是在城外设立了临时指挥部，指挥城外部队与伪军作战，他命令已经入城的第93团团长安春山上校统一指挥入城部队，并派遣第92团第3营入城增援。此时已经入城的部队计有：第93团第1营、第91团第1营的两个连、第93团第3营、五临警备第1团一部。
安春山在获得统一指挥权后，迅速联络上入城各部，他将各营、连部署在前街至金龙王庙一线，与城内日军展开了激烈的巷战。而日军在这个时候也仗着训练有素、装备精良的优势，迅速进入设置于各街口的碉堡内进行抵抗，城内战斗甚为激烈，中国军队进展受阻。20日下午3时，在安春山团长的指挥下，入城部队将城内日军压迫至城东南一隅，并竖起了国旗。包头当地的百姓在得知中国军队进城之后纷纷送茶送水，慰劳大军。但是由于东南角日军碉堡配置错综复杂，火力封锁猛烈，攻入城内的中国军队始终未能占领东南角，而日军又数次组织部队反击，战事被迫陷入拉锯状态。
新31师孙师民为了加快攻击速度，于此时命令预备队第92团第3营投入战斗，加强城内部队的攻击力，但没有想到在清晨出城寻找中国军队主力作战的日军熊川讨伐队也在这个时候赶回了包头，并与包头城西北门外与中国军队发生战斗，这一突发事件使得中日双方军队陷人了混战。在包头城内城外激战的同时，日军骑兵第1旅团旅团长片桐茂少将命令所属的两个骑兵联队分由固阳、安北两地紧急增援包头。
围城打援
20日下午4时许，日军骑兵第1旅团部及直属部队一举突入包头城内，成功与守军会合。在固阳的骑兵第13联队由其联队长小原一明大佐亲率一个大队增援，在行至三和号地区时遭到中国军队新31师第92团与绥远游击军第1旅的顽强阻击。日军以战车开路，步步推进，由郁传义上校指挥的第92团之第2营阵地险被日军突破。郁传义急以电话联络师部，希望增援。此时傅作义上将亲临新31师师部视察战况，并提出了改“围城打援”为“守城打援”的方针。其所属参谋靳书科上尉在接到郁团长的电话后将傅作义的意图告知郁传义，郁团长随即表示坚决固守阵地，并终于重创了增援的日军骑兵第13联队，其联队长小原大佐也在战斗中受重伤而被部下救回固原，残部300余人在大队长的指挥下拼死向包头突进，于21日凌晨时分冲到包头城西北门外，又遭到了中国军队新31师第93团北关守军与第91团西北关守军的阻击，被迫退入西北门外的城壕内据守。此时正值新31师派遣师部参谋处长宋海潮上校率领1个炮兵连入城支援作战，宋处长见城壕内之日军残部后，立即派人联络城墙上的第93团，先以炮火压制，随后以第93团步兵冲锋，将该部日军全部予以歼灭。由安北增援的骑兵第14联队则因距离包头较远，此时尚在奔赴战场的途中。
当日军骑兵第13联队被中国军队击败后，日本驻蒙军司令官冈部直三郎认识到了问题的严重性，他立即联络第26师团师团长黑田重德中将，命其速派命骑兵第 13 旅团大部和骑兵第14旅团一部增援包头，其余部队待集结完毕后陆续向包头开进，同时还命令靠近包头的伪蒙军各部救援包头。在包头的战斗相持入夜后，日军骑兵集团长小岛中将与在城外指挥作战的熊川中佐取得了联系，指定所有在包头的部队统由骑兵第1旅团旅团长片桐茂中将指挥，并且利用日军对地利的熟悉，制订了夜间反击的计划。
21日凌晨,日军在片桐中将的统一指挥下对城内外中国军队发起突然袭击，一举突破了位于城内前街的五临警备第1团阵地。第93团安春山团长在得知阵地失守后也立即投入部队展开反击，经过数十次激烈的争夺，安春山团长终于挫败城内日军，而位于城外的日军也在新31师副师民王雷震少将的有利反击下，攻势受挫。为了迅速将城内日军歼灭，安春山团长在挫败了日军的夜袭计划后，决定对城内日军发起反击。但是在攻击开始后，日军的碉堡火力封锁使城内中国军队无法继续扩大战果，从白天打到入夜，安春山上校指挥的部队仍与日军相持在前街一线。仅第92团第3营在营长邱子麟少校的率领下攻占了城南日军一个最为坚固的大院，将据守院内的日军1个小队悉数歼灭。此时，围攻萨县的骑6军传来消息，称已经攻克萨县，破坏了平绥铁路。
在城外，由熊川长治中佐指挥的步骑兵联队以300余骑兵在2架战斗机的掩护下，向新31师王雷震副师长的前线指挥所刘家窑子发起进攻。这支日军部队遭到了新31师第91团团长刘景新上校率领的第2营第5连以及1个炮兵连的有利阻击。日军骑兵在连续4次冲锋失利后放弃了正面攻击，企图迂回至刘家窑子侧背再次进攻，仍被刘景新率部击退。该股日军见攻击无效，便转而对位于黄草洼的新31师师部发起偷袭，又一次被作为预备队的第92团2个营击败，其残部百余人返回包头城东。
就在新31师第92团阻击当面的骑兵时，日军骑兵第14联队已接近包头。骑兵第14联队的驻地安北当时正受中国军队第81军的袭扰，所以该联队联队长小林一男大佐并未全部将部队带出，由于并未对沿路两侧进行任何侦查，以致在即将靠近包头时遭到中国军队新编第5旅的伏击，部队几遭全歼，联队长小林大佐被当场击毙，仅残部100余人逃出了伏击圈，但是在逃至昆都仑时又遭遇到刚赶至战场的新32师第94团第11营。第1营营长鲁乐山少校由于缺乏战场经验，企图劝降这支日军。日军残部在拒绝了劝降请求后，趁第94团第1营还没有做好战斗准备逃回了安北。
中国军队第101师在行至毛鬼神窑子地区时击败了由此增援的伪蒙军，其所属第302团在团长郭景云上校的指挥下，于昆都仑地区包围前来增援的一支伪蒙军，俘其该团团长于振赢以下300余人。伪团长于振赢被俘后，主动提出并成功的劝降了位于新城堡的伪蒙军投诚。
战事胶着
12月21日下午3时，日军第26师团先行的两个大队在突破了绥远游击军外围阻击后抵达包头附近，在5架战斗机的掩护下对城东新31师第93团的两个营发动进攻，并在突破了这两个营的防线后与熊川骑炮兵联队会合，以一半兵力入城与集团司令部汇合，另一部径直向黄草洼新31师师部发起攻击。此时的黄草注除师部直辖部队外，仅第92团两个营和刚抵达战场的新32师第94团第2营，鉴于先前阻击熊川骑炮兵联队时已遭受相当损失的情况下，这三个营井未能阻挡住当面的日军,新31师师长孙兰峰少将只能下令撤退到北山根附近进行整顿。由于日军进攻甚猛，留置于新31师师部附近的一个炮兵连因攻城副指挥官刘振蘅没能及时通知而告覆没，这个连的4门山炮全被日军掠获。
日军在夺取黄草洼后又将矛头指向了西北关。防守西北关的第91团第2营第2连和团属机枪连在第2连连长孙英年上尉的指挥下，集中轻重机枪成功阻击日军。此时新32师所属之第95、第96团赶至包头城，这2个团在师长袁庆荣少将的指挥下立即投入战斗，与进攻西北关的日军大队发生激烈战斗。而日军第26师团的后继部队也千此时陆续赶至，投入了战斗，致使新32师腹背受敌，遭受惨重损失，师部参谋王晓鹏上尉与第96团的两名连长相继阵亡。正当新32师危急时，第101师在摆脱了沿途的伪蒙军后，也赶到了西北关加入战斗。中日双方即围绕着西北关为争夺要点，一直混战到入夜后。
12月22日晨，在城内稍事休整的日军以骑兵第1旅团旅团长片桐茂少将为反攻总指挥，指挥6个步兵中队、3个骑兵中队、1个战车队以及炮兵一部向城内外的第35军各部发动总反攻。第101师、新31师、新32师与五临警备第1团同时与日军展开激烈战斗。这一战斗一直进行到中午时分，以日军停止攻击而结束。
主动撤退
鉴于日伪援军仍不断赶往包头，中国军队经过两天两夜的苦战，已经极度疲劳。如果再与日军继续作战，势必遭受更大的损失。为此，第8战区副司令长官傅作义上将根据情况认为，在3天的激烈争夺战中，已杀伤大量日伪军，此时要收复包头已是不可能的，于是傅上将决定撤军。命令概要如下：“我军远袭包头，业已攻入城内，消灭了大量敌人，并将日军主力吸引过来，配合湘北战役的任务，已经完成。为了避不利、找胜利，决定作战略转移。各部队应按先城内后城外，先攻城部队后打援部队的次序，互相掩护，脱离战斗，于21日夜间向中滩地区转进。”
22日中午，第35军开始撤退。日军发现第35军主力有撤退迹象之后，派出了大量战车、汽车尾追，但随即遭到殿后的第101师缠斗，被迫撤回包头。第35军主力虽然摆脱了日军的追击，但是在昆都仑河地区又遭到了伪蒙军的袭扰，在战斗中，接应第35军主力撤退的新32师第94团第1营第3连连长张禄臣上尉以下百余人阵亡。
此时，在包头城内的战线上，当傅上将的命令下达后，新31师副师长王雷震少将紧急派人进入城向第93团安春山上校传达。但是入城作战的官兵纷纷表示收复包头的决心，坚不撤退。而城外的部队已开始陆续撤退，新31师王副师长亦屡次派人急催安春山撤军。这时安春山只能伪称“撤退是假，出城决战是真”为由，将部队骗出了包头。当安春山上校率领的部队撤至昆都仑河时，发现第35军之主力正在与伪蒙军纠缠中，于是立即加入战斗，从侧面袭击伪蒙军。伪蒙军腹背受敌，向昆都仑河西北山麓撤退。而位于包头的日伪军，虽然已集结兵力近万人，却因前次追击时受到阻击而并没有采取进一步行动。
24日凌晨，第35军各师陆续撤至中滩地区，并返回了绥西。进攻包头的战役至此结束。第35军撤出包头的同时，仍有第93团第1营的7名战士坚守包头城内的娘娘庙，他们没能收到撤退的命令，发现大部队撤退后选择了坚持作战，直至22日入夜后因弹尽粮绝，举枪自裁。战后，日军感其忠烈，特为这7名英勇的中国战士立碑。
战役影响
第35军毙伤日伪军3000余人，击毁日军汽车60余辆，战车4辆，摧毁军火库1座，缴获各种武器、军需品甚众，并击毙日军联队长1人（另有骑兵第13联队联队长小原一明在回到固阳后伤重不治而亡），俘虏伪军团长1人，而根据日军内部机密文件的统计，12月下旬日军在包头外围所发动的冬季反击作战总共战死军官11人、准士官以下战死196人，另外有军官30人、准士官以下464人战伤，合计死伤701人，若加上12月中旬日军的伤亡以及国军在包头城内给日军造成的死伤，包头战役日军理应死伤近千名。第35军是役伤亡2000余人，虽然第35军此战未能收复包头，但这次攻击有利于华北抗日根据地的巩固，吸引了晋北、察南以及华北大部分日军的注意，使日军抽调华北兵力南下的计划未能得以实行。在战略上已起到了巨大作用。
中国军队这次行动却给日军以极大震动，他们根本就没有料到傅作义集团会有实力对日军展开攻势。日本驻蒙军为了防止傅作义集团再次袭扰包头，于1940年1月15日制定了旨在歼灭傅作义集团的“八号作战”。鉴于五原在包头以西200多公里，超过了日军大本营的作战控制线，所以驻蒙军又将作战计划呈报大本营。而日军大本营在当时并未考虑到要占领绥西，所以虽然在1月24日的回文中批准了此项计划，但是命令出击部队在达成目的后应立即撤回原防地。这一决定最终导致了傅作义利用日军主力在达成任务后相继撤回的机会，实施反攻，并最终取得了绥西战事的胜利。