李世民指挥取胜的第二个大战役,是平定刘武周。这次战役,从武德二年(619年)十一月出征,到第二年四月结束,总共半年时间。战争进行当中,李世民巧妙运用“坚壁挫锐”的方略,使唐军由劣势转变为优势,从接连溃败到大获全胜,整个战争是惊心动魄的。刘武周是河间景城(今河北交河东北)人。迁居马邑(今山西朔县),任马邑鹰扬府校尉。大业十三年(617年)二月,与同郡张万岁等杀太守王仁恭,聚众万余人,自称太守。他依附突厥贵族,攻占雁门、烦楼、定襄等郡,突厥封其为“定杨可汗”,给予地方,自称皇帝,年号天兴。武德二(619年)年三月,在突厥的支持下,南侵并州(今晋阳)。四月,接受大将宋金刚的建议,“入图晋阳,南向以争天下。”宋金刚原是易州起义者的首领。当时,有一万多人马,与另一起义军首领魏刀儿相联结。窦建德进攻魏刀儿的时候,宋金刚在救援当中被战败。于是,他带领4000人马向西投降了刘武周。刘武周听说宋金刚会用兵,非常高兴,称他为宋王,将军事大权交给他,并将自己财产的一半送给宋金刚。宋金刚也深加交结,休掉原来的妻子,娶了刘武周的妹妹。刘武周任命宋金刚为西南道大行台。这时的宋金刚,领兵两万,依靠突厥,气势很盛。一时间,所向披靡,攻无不克。担任并州总管的齐王李元吉抵挡不住。接着,榆次被攻陷,太原处于危急之中。五月,平遥被攻陷。六月,攻取介州。李渊忧心忡忡。为了扭转战局,决定派右仆射裴寂来前线督军抗击,任命裴寂为晋州道行军总管,讨伐刘武周,任其见机行事。
可是,裴寂也未能改变战场的形势。裴寂到介休,宋金刚凭借城池抵抗。裴寂在度索原扎营,军士饮用山涧里的水,宋金刚就切断水源,使唐军的士兵因干渴失去战斗力。裴寂想转移营地靠近水源,宋金刚便趁机挥兵进攻,于是,裴寂的军队溃败,几乎全军覆灭,裴寂本人只身逃回晋州。紧接着,刘武周进逼太原,齐王元吉半夜带着妻妾逃离,奔赴长安。李唐王朝的发迹地竟在旦夕之间陷落了。李渊惊呼:“晋阳有几万强兵,有足够吃十年的粮食,王业兴起的根基,一下就丢弃了。”十月,宋金刚进攻并攻克了浍州和晋州。而且,由于裴寂怯懦,错误地实行焚烧政策,百姓惊恐不安,忧愁抱怨,都想去当强盗,夏县居民吕崇茂聚众起义,响应刘武周,裴寂去讨伐,竟被吕崇茂打败。消息传到长安,朝野震惊。就在这种十分险恶的形势下,李渊慌忙颁发手敕:“贼势到如此地步,很难与他们抗争,不如放弃黄河以东地区,谨守关西。”秦王李世民坚决不同意,上表称:“太原是王业的基础,国家的根本;河东地区富饶,京城靠它供给,如果全部放弃,臣深感愤恨。希望给臣三万精兵,必定可望消灭刘武周,收复汾、晋。”于是,高祖征发关中所有兵力扩充李世民的部队,让他挂帅讨伐刘武周。李渊亲自到长春宫为秦王送行。
十一月,正值隆冬季节,李世民乘河冰坚硬,带兵从龙门渡过黄河,驻扎在柏壁,与宋金刚对峙。当时黄河以东的州县遭抢劫后,没有粮仓,人人惧怕侵扰,聚居在城堡中,征集不到东西,军队缺粮。面对这种情况,李世民坚决改变过去裴寂那一套扰民的做法,想方设法安抚人心。他发布王敕晓谕百姓,百姓听说李世民率军前来,踊跃归顺,由近及远,前来的人日益增加,然后唐军逐渐征集粮食,军粮因此充足。于是休兵喂马,只命小部队乘机抄掠敌军,大军则坚壁不战,宋金刚的势力因此日益衰落。一次,李世民带轻骑兵去侦察敌情,随从的骑兵四下分散,只他和一名穿铠甲的士卒登上山丘睡觉。不久,敌人从四面包围了他们二人。开始,二人毫无知觉,恰巧蛇追老鼠,碰到了甲士的脸,甲士惊醒后发现敌情告诉了李世民,二人一起上马,才走了百余步,就被敌人追上,李世民用大羽箭射死了敌人的骁将,敌骑兵于是退去。坚壁了一段时间,各位将领不耐心了,都请求与宋金刚交战。李世民说:“宋金刚孤军深入,麾下集中了精兵猛将,刘武周占据太原,依仗宋金刚为屏障。宋金刚的军队没有储备,靠掠夺补充军需,利于速战。我们关闭营门不出,养精蓄锐,可以挫败他们的锐气。再分兵攻汾州,阝显州,骚扰他的心腹之地,他们粮尽无计可施,自然会退军。我们应当等到那时再战,目前不宜速战。”
双方对垒相持5个月后,宋金刚以军粮困乏,部队大馁,不得不后撤。秦王率军奋勇追击,至吕州追上了宋金刚部将寻相。打了个大胜仗后,又继续追击,一昼夜走了200多里,打了几十仗。到高壁岭,总管刘弘基抓住马的缰绳规劝道:“大王打败敌人,追到这里,功劳已足够了,不断深入,就不爱惜自己吗?况且士兵们饥饿疲惫,应当在此停留扎营,等到兵马粮草都齐备了,然后再进击也不晚。”李世民说:“宋金刚军心涣散;无计可施才逃跑,功劳难立而失败容易,机会难得,转瞬即逝,一定要趁此机会消灭他。如果我们停滞不前,让他有时间考虑对策加以防备,就不可能轻易打败他了。我尽心竭力效忠国家,怎么能只顾惜自己的身体呢?”于是,催马追击,将士们也不敢再提饥饿。唐军在雀鼠谷追上宋金刚,一天交锋八次,都打了胜仗,俘斩敌军数万。当晚,在雀鼠谷宿营。李世民已经两天没有吃上饭,三天不解铠甲睡觉了。部队里能吃的只剩下一只羊。将士们都很饿,李世民就和大家分吃了这只羊。接着,李世民带兵赴介休城。这时,宋金刚尚有二万部队,出西门,背城而阵,欲决死战。李世民命李世责力、程咬金、秦叔宝当其北,翟长孙、秦武通当其南,他本人则亲率3000精骑冲其阵后,结果,宋金刚大败而逃。李世民追出几十里,来到张难堡,摘下头盔示意堡垒,据守堡垒的军士认出李世民,都欢呼雀跃,高兴得流下泪来。随从告诉守军:秦王还未进食。守军便献上混酒、粗米饭,秦王吃得很香。
在张难堡,敌军将领尉迟敬德、寻相等率余部八千来降。敬德籍属朔州,武勇善骑,是一位杰出的精骑将领。李世民得到尉迟敬德非常高兴,引为右一府统军,并让他仍然统领八千旧部。有人担心,敬德会叛变。李世民不听,说:“昔日萧王推心置腹并且能够完成使命,现在信任敬德又有什么可怀疑的。”刘武周听说宋金刚失败,大为惊恐,便带了百余骑弃太原北走,亡奔突厥。宋金刚收拾残部,准备再战,但部众都不肯跟随他与唐军作战,于是宋金刚也和一百多骑兵逃往突厥。不久,宋金刚打算跑回上谷,被突厥捉回,腰斩。
刘武周当初南侵犯唐时,他的内史令范君璋曾规劝道:“唐主以一个州的兵力,直取长安,所向无敌,这是上天有助,不是人力。晋阳以南,道路狭窄险要,孤军深入,后无援军,假如进军攻战不利,怎么回军,不如北面联合突厥,南面与唐结交,在此一方称王称霸,才是长远之计。”刘武周不听,留范君璋守卫朔州,自己率军南侵。刘武周失败后,流着泪对范君璋说:“我没有采纳你的意见,以至于到了现在这种地步。”过了一段时间,刘武周策划从突厥逃回马邑,事情泄露,被杀。突厥人任命范君璋为行台,统领刘武周的余部。
经过半年艰苦卓绝的奋斗,李世民终于圆满完成了使命,收复了晋、汾旧地,消灭了又一个“争天下”的强大敌人,为巩固初生的唐朝政权立下了殊勋。在这次战役中,李世民不仅在指挥上是杰出的,在军事作风上也堪称模范,一个封建时代的军事指挥者,能够在战斗中做到身先士卒,与士兵同甘共苦,确实是难能可贵的。
战役结束以后,李世民留将领李仲文镇守并州,自己则引军凯旋长安。