包頭戰役，是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日的迴文中批準了此項計劃，但是命令出擊部隊在達成目的后應立即撤回原防地。這一決定最終導致了傅作義利用日軍主力在達成任務后相繼撤回的機會，實施反攻，並最終取得了綏西戰事的勝利。