刘武周的祖籍是河间景城(今河北省交河县东北),其父时迁到马邑(今山西省朔县)。他曾参加过隋炀帝进攻高丽的战争。后来,回到马邑,为鹰扬府校尉。义宁元年(公元617年)二月,由于他与马邑太守王仁恭的侍儿私通,害怕事泄惹祸,遂先发制人,乘农民饥饿无食,农民起义蓬勃发展的时候,宣布王仁恭“闭仓不赈恤”的罪状,同时又与同郡张万岁等十余人密谋策划,杀了王仁恭,自己做了太守。
刘武周叛隋,又“遣使附于突厥”,所以,隋雁门郡丞陈孝意、虎贲郎将王智辩合兵讨伐他。隋军围攻桑干镇(今山西省雁门关西北),刘武周联合突厥共击王智辩,王智辩战败被杀,陈孝意逃回雁门(今山西省代县)。刘武周又围攻雁门,陈孝意虽然“悉力拒守”,但终因“外无救援”,“围城百余日,食尽”,而被其部下张伦所杀。张伦杀了陈孝意,以雁门投降了刘武周。
三月,刘武周又先后破楼烦郡(今山西省静乐县)、定襄郡(今内蒙古和林格尔),同时,对突厥始毕可汗进行贿赂,突厥遂立刘武周为定杨可汗,刘武周也就自命不凡,以皇帝自居了。
刘武周经常借助突厥的力量威胁太原。武德二年(公元619年)四月,刘武周勾结突厥,军于黄蛇岭(今山西省榆次县北),距离太原,近在咫尺,李元吉当然感到威胁,遂派张达率军驱逐刘武周,结果张达战败,全军覆没。刘武周乘机攻陷榆次(今山西省榆次县)。接着,刘武周兵围太原。五月,又攻陷石州(今山西省离石县),杀刺史王俭,继又攻陷平遥(今山西省平遥县),对太原形成了战略上的包围形势。
六月,刘武周部将宋金刚率兵三万进攻太原,刘武周攻陷介州(今山西省介休县)。唐高祖派左武卫大将军姜宝谊、行军总管李仲文带兵迎战,结果唐军大败,姜宝谊、李仲文皆被俘虏,后又逃回,再和刘武周作战。由于屡次战败,唐高祖深为忧虑,遂以右仆射裴寂为晋州道行军总管,前往讨伐刘武周。裴寂进至介州(今山西省介休县),宋金刚据城固守。宋金刚首先断绝唐军的水源,待唐军欲移营就水时,宋金刚乘唐军因缺水所造成的困难,突然袭击,打得唐军狼狈逃散,溃不成军。裴寂日夜奔驰,逃到晋州(今山西省临汾县)。这次战役以后。晋州以北,除了西河(今山西省汾阳县)以外,全为刘武周所有了。
在这种形势下,李元吉在太原惶恐不安。
李元吉是唐高祖的第四子,唐高祖从太原起兵时,命他为“太原郡守,封姑臧郡公。寻进封齐国公,授十五郡军事、镇北大将军,留镇太原,许以便宜从事”,后又“进爵为王,授并州总管”。
李元吉在太原,骄奢淫逸,无恶不作。他有“奴客婢妾数百人,好使之被甲,戏为攻战,前后死伤甚众,元吉亦尝被伤。其乳母陈善意苦谏,元吉醉,怒,命壮士殴杀之。性好田猎,载罔罟三十车,尝言:‘我宁三日不食,不能一日不猎。’常与(窦)诞游猎,蹂践人禾稼。又纵左右夺民物,当衢射人,观其避箭。夜,开府门,宣淫他室。百姓怨愤,(宇文)歆屡谏不纳,乃表言其状。”窦诞、宇文歆二人,是辅佐李元吉留守太原的官员。窦诞与李元吉一道“游猎,蹂践人禾稼”;宇文歆则屡次劝阻李元吉的这些行动,李元吉都置之不理,一如既往。他向唐高祖反映,李元吉才于公元619年(武德二年)二月被免官。三月,李元吉又官复原职,再为并州总管,但他并无任何收敛的表现。因而,当九月刘武周又进逼太原时,他欺骗刘德威说:“卿以老弱守城,吾以强兵出战。”实际上这是脱身之计。他乘夜溜出城去,携其妻妾奔还长安去了。刘武周兵临太原城下,“土豪薛深以城纳武周”。对此,唐高祖愤怒异常,认为是宇文歆之过,要将他斩首。礼部尚书李纲劝阻说:“王年少骄逸”,“歆谏,王不悛,寻皆闻奏,乃忠臣也,岂可杀哉!”唐高祖虽然听取了李纲的意见,未错杀宇文歆,但其起家之地的失守,不能不使长安大为震动。
刘武周占据太原后,又派宋金刚攻陷晋州,进逼绛州(今山西省新绛县),直捣龙门。宋金刚长驱直入,直达黄河岸上,这无疑是对唐的极大威胁。不仅如此,宋金刚还进攻翼城(今山西省翼城县)、绛县(今山西省绛县)一带,迫使裴寂节节败退,困守在虞州(今山西省运城一带)、泰州(今山西省万荣县西)一隅之地。同时,河东的王行本也响应刘武周,致使“关中震骇”。这时,唐高祖提出了错误的主张。他说:“贼势如此,难与争锋,宜弃大河以东,谨守关西。”在这个问题上,李世民却颇有远见卓识。他认为:“太原,王业所基,国之根本;河东富实,京邑所资,若举而弃之,臣窃愤恨。”他表示要亲自率兵三万人,平定刘武周,收复太原。
武德二年(公元619年)十二月,李世民所率唐的主力军于美良川(今山西省夏县北)大败宋金刚部将尉迟敬德。尉迟敬德又欲增援河东的王行本,在安邑(今山西省安邑县)又一次被李世民打败,只得退居柏壁(今山西省新绛西南)。王行本得不到外援,于武德三年(公元620年)正月向唐投降了。
武德三年四月,李世民追及宋金刚部将寻相于吕州(今山西省霍县),取得很大胜利。李世民又乘胜北进,一昼夜行军二百余里,战数十合。尽管将士疲惫不堪,李世民仍然带头策马前进,终于在雀鼠谷(今山西省介休县与霍县之间)追上了宋金刚,一日八战,连战皆捷。宋金刚狼狈北逃,尉迟敬德与寻相先后在介休(今山西省介休县)与永安(今山西省霍县)投降。李世民进军,势如破竹。刘武周的失败,已是势所难免。
刘武周听说宋金刚大败,惊恐万状,放弃太原,北走突厥,后被突厥所杀。宋金刚看到残局不可收拾,也想逃奔突厥,结果也被突厥杀死了。李世民取得太原,原为刘武周所控制的州县,全都归唐所有。
刘武周失败以后,其部将苑君璋还驻守在朔州(今山西省朔县)。苑君璋曾勾结突厥,屡次进攻马邑、太原一带,但都没有什么发展,最后只得投降了唐朝。
消灭了刘武周,稳定了太原,使河东诸郡全为唐所有,既可以东行无阻,为攻取洛阳扫清了道路;同时,也使秦、晋连成一片,扩大了统一全国的根据地。