日本关东军司令官植田谦吉和其参谋长东条英机,对进攻山西最为积极,10月2日起即命令其察哈尔派遣兵团主力向原平镇追击前进。4日其本多旅团在飞机轰炸的配合下进攻守崞县的王靖国军,筱原旅团围攻守原平的姜玉贞旅,两部与日军展开激烈战斗。5日,酒井旅团进攻守阳方口的马延守旅,经激战后,马旅放弃阳方口、宁武城,退守轩岗,尔后酒井旅团在雁北陆续击败何柱国、赵承绶骑兵,于11日集结在凉城,配合后宫师团(原铃木旅团扩编)于14日夺取了归绥城(今呼和浩特)。其进攻崞县的本多旅团经四天激战,在重炮四门、野炮十余门的轰炸下,7日攻占崞县,守城团长二员和两团官兵大部与城共存亡。王靖国率城外部队借口收容部队,逃住滹沱河东避战。崞县陷落后,原平守军益孤,日军出动二十余架飞机连日狂轰滥炸,复集中几十门大炮猛烈轰击,姜玉贞率部与日军反复冲杀,击败了日军多次冲锋。10日起,筱原旅团在飞机轰炸和坦克的掩护下继续猛攻原平,姜玉贞督率所部拼死抵抗,双方死伤惨重,战至11日,姜旅仅剩余官兵两三百人,火炮全被炸毁。日军在坦克的掩护下冲入城内,姜玉贞率领残余官兵据守原平城东北角,与日军进行肉搏巷战,最后全旅壮烈殉国。
由于姜玉贞旅死守原平城将近十天,阻止了敌人沿云中河南下,使卫立煌得以从容部署其守忻口的兵力。8日郝梦龄率第九军刘家骐师和郑廷珍独立第五旅以及卫立煌的基本部队李默庵第十四军均到达忻口,由平型关前线撤退下来的刘茂恩、高桂滋等军也都如期到达。卫立煌将其中央军作如下区分:以刘茂恩军为右翼,由刘负责指挥;以郝梦龄、陈长捷、高桂滋等军任正面,由郝梦龄负责指挥;以李默庵、郭宗汾、孟宪吉等军任左翼,由李默庵负责指挥,另部署周岱的八个炮兵团在中央战线,全部兵力八万余人。以后随着战局的发展,又增调傅作义指挥的段树华、李俊功师及董其武旅王靖国军以及增援来的朱怀冰师及陕军李兴中师等,均列入中央军战斗序列。
日军方面亦于10月中旬调整晋北前线指挥系统,委任板垣征四郎为晋北前线指挥官,统一指挥华北方面军和关东军在晋北的部队。板垣将其指挥的部队作如下区分:以筱原旅团和堤不夹贵支队(关东驻伪满第三守备队抽调兵力编成的加强营)任右翼;以自己所率第五师团任左翼,但发起攻击不久,日军参谋本部即将第五师团国崎登第九旅团调上海参加金山卫登陆,只留下了一个三浦敏事的第二十一旅团和萱岛高支队(以华北驻屯军步兵第二联队和战事,骑兵、工兵各一中队为基干组成)。后因第五师团兵力过于单薄,寺内寿一又从担任平津警备的一○九师团中抽调两个大队,再加上酒井旅团的一个机械化步兵联队派往山西加强第五师团。
10月13日拂晓,日军出动飞机三十余架向郝梦龄、李默庵两军阵地进行轰炸,接着以坦克五十六辆、大炮四五十门,掩护关东军五千余人向南怀花、阎庄刘家骐、李默庵两师阵地猛扑,南怀花阵地被敌人突破。卫立煌以增援上来的傅作义部及李仙洲、陈长捷等部向突破口之敌反击,并令刘戡、陈铁两师由左翼向永兴村亘马家山一带敌之侧背攻击,双方展开激烈的争夺战。敌人攻势虽暂被扼制,但15日晨起板垣又投入第五师团主力七八千人,向永兴村、安家庄一带阵地猛攻。卫立煌陷于苦战,军长郝梦龄、师长刘家骐、旅长郑廷珍均中弹阵亡,师长李仙洲、旅长董其武、于镇河亦均在督战时负伤,此后即由陈长捷指挥正面阵地。
由于日军攻势猛烈,阎锡山不得不从朱德右翼军中抽调刘奉滨、李俊功两个师,从龙泉关前线抽调朱怀冰、李兴中两个师增援卫立煌中央军。同时命令刘茂恩军拼死固守忻口战场右翼阵地,不得再有疏失。命令王靖国速率该军归卫立煌指挥,拼死杀敌,以赎前愆。17日,板垣指挥日军分三路再次发动狂攻;其左翼一路千余人很快被刘茂恩军击败;右翼的一路四五千人向官村、南怀花阵地进攻,经陈长捷军反复冲杀,打成对峙状态,其中的另一股以坦克三十余辆,掩护步兵三千余人向我左翼阵地进攻,亦被李默庵军击退。由于日军参谋本部抽调第五师团主力国崎登第九旅团去上海作金山卫敌前登陆的突击部队,虽然华北方面军派遣来几个支队加强其晋北军团,但毕竟兵力薄弱,故始终不能突破卫立煌在忻口的防线,只能构筑坑道接近我守军阵地,再加上板垣兵团的后方屡遭八路军林彪、贺龙、刘伯承等师在平型关、阳明堡、雁门关一带伏击其增援部队和辎重、飞机等,使其腹背受敌。又加上晋军将领自李服膺正法后,作战亦颇卖力,总计太原战役除阵亡上述各将领外,还阵亡旅长梁鉴堂,伤师长刘奉滨。各军阵亡团、营长以下官兵万余人,负伤官兵二万余人。这次战役将板垣兵团阻挡在忻口国防工事前不能前进一步,使晋北战场敌、我两军呈现持久相持的态势。
但这时在晋东方面却出现了急剧恶化的形势。原来于9月中旬在北平西房山击败孙连仲第二十六路军的川岸文三郎师团,配合谷寿夫、土肥原贤二、山冈重厚等师团,陆续击败刘峙指挥的第二集团军平汉北段各军后,其土肥原、下元熊弥两师团沿平汉线越过石家庄追击南退的刘峙军,而川岸、山冈两师团则转入晋东南作战。当时晋军主力全被板垣兵团牵制在晋北,担任晋东作战者为西北军、陕军、滇军,后又有八路军及川军增援。为了掩护忻口会战保卫太原,10月上旬,阎锡山、黄绍竑部署曾万钟军为右翼,在测渔、九龙关间占领阵地;冯钦哉军为左翼,在栾庄占领阵地;孙连仲军为晋东前线的主力,防守井陉至娘子关正面。本来孙军已奉命增援晋北,由于石家庄仓促撤退,晋东骤然吃紧,遂由寿阳东开,堵击日军川岸师团沿铁路西犯的攻势。
10月13日,由石家庄出动的日军川岸师团右翼支队分两路西犯:一部四百余人由贾庄向井陉正面进攻;一部千余人绕攻长生口直抵旧关,进迫娘子关侧后。当时孙连仲军尚未进入阵地,形势危急。黄绍竑乃于13日夜命令孙蔚如军赵寿山师固守雪花山,并派部队向长生口出击,迟滞敌人前进。赵寿山率部力战,初颇得手,后遭敌人反击,丧失雪花山阵地,退守乏驴岭,有力地支援了孙连仲中央军的展开。孙到达战场后,即派其张金照师于曹泉高地经桃林坪至观音驼之线,北接赵寿山师,据守井陉北高地至乏驴岭之线;冯安邦师占领北峪南北高地之线,主力摆在娘子关;张华堂旅进占方岭关;池峰城师作为预备队,控制寿阳、阳泉两地。当时日军已先我夺取了娘子关外三道国防工事及雪花山、旧关、长生口等险要关隘,已开始向娘子关进攻。孙连仲军赶到战场,即于14日辰时命令冯安邦师向进抵关沟附近的川岸师团右翼支队第七十七联队展开攻击,经两日激战,毙其大队长中岛力男以下三百余人,始稳住了阵脚。接着黄绍竑电委孙连仲全权指挥娘子关前线战事,督率本军及曾万钟军于16日完全解决据守旧关的日军,完成任务赏洋五万元,畏缩不前者就地枪决。孙连仲根据战区长官命令,于16日拂晓下达了对旧关日军的总攻击令,以曾万钟军为主攻部队,冯安邦师主力由大小龙窝切断敌军归路,冯钦哉第二十七路军工兵营在旧关西南高地固守待机堵击,张金照师侯镜如旅协助赵寿山师固守乏驴岭,池峰城师刘恒德旅占领关沟西北高地。
10月16日拂晓,娘子关前线各军开始总攻;冯安邦师迅速肃清关沟残敌,并切断了大小龙窝敌军归路。但曾万钟军攻击王家岭高地未有进展,而据守旧关之敌虽经我军围攻,仍依托我国防工事固守,薄暮后且冲出工事向冯钦哉二十七路军工兵营开始反扑。冯部阵地被突破,后增加教导团阻击,始在突破口前维持住阵地。17日,我军再度发起进攻,以曾万钟军一部封锁大小梁家、花店岭等各要点,阻止敌援军的进路;冯安邦师攻占长生口及大小龙窝;以曾万钟军、冯钦哉军及冯安邦师一部并加入炮兵大队担任对旧关日军的围攻;以池峰城师控制在程家陇底作预备队。正在我军部署总攻击时,据守旧关的日军于17日开始反扑,双方展开了激烈的战斗。敌人虽然只有两个联队,但战斗力甚强,虽经孙连仲、曾万钟、冯钦哉、赵寿山等部数万之众多日围攻,终不能动摇日军固守的旧关、核桃园等据点,且于19日被日军夺去乏驴岭险要支点。
10月19日,日军川岸师团长接到华北方面军进军太原的命令,当即将其驻朝鲜师团作如下部署:以右纵队(原来的右翼支队)沿井陉-新关-石门口大道及其北攻击敌人;以左纵队(以步兵四个大队,山炮兵一个大队为基干)沿微水镇-测鱼镇、石门口大道前进,进入右纵队正面守军的背后。为了加强川岸的兵力,又将下元熊弥师团的苫米地四楼旅团入列川岸兵团,跟随川岸前进。另以山冈重厚师团于10月29日由元氏出动,通过昔阳(该师团的长谷藤荚旅团代号为昔阳支队)直插娘子关我国守军的后方。孙连仲部西北军是有一定战斗力的部队,但自"七·七"事变后增援二十九军,经过房山、琉璃河、涿县、平山诸战斗,实力只剩战前的三分之一,全路人不满一万,这次又担任娘子关正面防卫,与敌军激战八昼夜,兵员已不足六千,实难再支撑战局。为此,孙连仲在受到川岸兵团主力大举进攻时,于22日向南京最高统帅部请援。
蒋介石为援救娘子关前线的危局,当即电令邓锡侯率川军三个师火速向晋东增援,同时电朱德将林彪、刘伯承等师由晋北转移到晋东归黄绍竑指挥,阻击日军前进。川军不仅武器窳劣,而且缺乏防寒装备,太行山区10月份早晚已着棉衣,而川军尚穿单衣草鞋,因之战斗力极弱。川军于23日到达前方后,黄绍竑即部署该路军占领旧关经绵山、苇泽关至驴桥岭之线,右为孙连仲部池峰城师、中为冯安邦师、左为张金照师,张华堂旅控制在后方。其他陕军赵寿山师集结在神灵台整理,滇军曾万钟师李世龙旅控制梁家堖为机动部队。八路军陈赓旅进占马山村。这时娘子关前线曾一度暂趋沉寂,但以山下、苫米地两旅团组成的日军左翼纵队却由横口渡河向南障城、测鱼镇我军右翼曾万钟军迂回成功。24日,其先头部队与我八路军刘伯承一二九师陈赓旅叶成焕团在七亘村遭遇,叶团猝不及防,颇受损失。接着山下奉文即将部队展开,击败曾万钟军,于26日夺取了我娘子关前线右翼阵地十字路、乱安村、固驿镇等支点。幸而川军王铭章、孙震两个师增援上来,经过力战,始又在石门一带建立起一条防线。这时孙连仲已察觉川岸以少量部队在娘子关牵制其主力,而以主力山下奉文纵队从正太路至南迂回其后方的作战意图。为保护后方安全,孙连仲遂以二十六路军的一部守娘子关,将主力撤至巨城镇、移穰镇间,并将冯钦哉部三个团部署在上下磐石至巨城镇间,阻止娘子关正面日军的入侵。28日,山下奉文指挥军队进攻娘子关撤下来的孙连仲军,陆续夺取巨城和移穰镇等据点,同时又击败赵寿山和孙震部队,夺取了会礼村和石门口,形成了对娘子关、旧关守军包围的态势。孙连仲遂下令正面守军向阳泉撤退。
孙连仲28日电南京统帅部和战区长官部,报告两翼友军均溃败,本路不得不放弃正面阵地情况后,蒋介石即电令孙率部在寿阳以东地区坚强抵抗以待援军。孙当即拟定四道作战防线,并以寿阳东的松塔镇、范豹岭、芹泉镇等地为最后死守地带,并规定如退出此线以西即军法处置。因前线各军大多溃散,曾万钟在芹泉镇仅收编千余人,川军曾甦元旅只剩下四百余人。川军邓锡侯军虽又有一个师到达榆次,但一时尚运送不到前方。为救娘子关前线之急,10月30日晚,彭德怀率八路军陈光旅先头团赶到上龙泉,徐向前率陈锡联团到达马介川,刘伯承率陈赓旅布阵昔阳东冶头。11月2日,除刘伯承率陈赓旅在昔阳东阻击山冈师团外,彭德怀复亲自率陈光旅在马道岭阻击由南阳胜、药林寺西进之敌四千余人,予敌以重创。因川岸夺取娘子关、旧关后,即兵分两路穷追不舍,而孙连仲掌握的本路军所余兵力不过三千人,军官伤亡五分之三,冯钦哉陕军各师亦伤亡惨重,而增援上来的邓锡侯川军战斗力极弱,孙虽严令各部抵抗,但因川岸和山冈两路日军进逼,已建立不起来一条防线。沿正太路西进的日军30日占领阳泉,11月2日占领寿阳。孙连仲3日率总部及张华堂旅残部赴什贴镇,拟集结部队于太原以东地区作最后抵抗,但在什贴镇与追击的日军遭遇,部队被冲断,遂令廖安邦师于5日夜集结太原东孟家井阻击由什贴镇出动进占小店镇之敌,以掩护各军渡汾河。至此保卫娘子关之战告一段落。
本来在忻口之战正激烈进行之际,阎锡山即于10月17日,以(篠申参)电命令傅作义将总预备军在前方各部队交给卫立煌指挥,令傅督率部队在太原至忻口间构筑工事。23日,阎复以(梗子参)电命令傅作义督率本军董其武旅及独一旅陈庆华部和四个新兵团迅速布置省垣城防。25日,阎又以(有亥参)电命令杨澄源于三日内完成太原附近之砖井至殷家堡间野战工事及青龙镇野战工事。11月1日,阎锡山命令王靖国率忻口前线部分部队据守忻县城北公路两侧第二阵地阻击敌人南下,命卫立煌率主力在太原以北菜水坞、青龙镇、天门关之线占领阵地,协助傅作义固守太原。卫立煌当即于2日对忻口前线部队下达转移命令,并限于4日午前到达指定线进入阵地,配合傅部保卫太原。卫于3日上午11时在忻县总部发布中央军各部在太原北歼敌的命令,划分作战地境,限于4日午前占领阵地完毕,星夜加强工事。阎锡山为了统一指挥,还于4日以(支酉参)电委卫立煌为第二战区前敌总司令。
蒋介石为支援太原保卫战,于3日派裴昌会师开到青龙镇附近归卫指挥。但由于孙连仲指挥的部队过早地放弃了太原以东的阵地,使日军川岸、山冈两师团得以直插太原之侧背,裴昌会师开到阳曲湾即仓皇退回,因而忻口前线撤回的部队未及进入阵地,板垣兵团即跟踪追至,遂纷纷向汾河西撤退,陷太原守军于孤立。