十一月十五日,刘云芳率领虎威卫万余人先行赶到雁门关。
十七日,刘云芳指挥各军包围了善阳城。
隋军各部集合,约有两万余人,是刘武周所部的三倍之众。
此时蹦跶了一个多月的刘武周终于发现自己陷入了绝境之中。刘武周有野心,也有能力,但并无与隋军主力决战的底气。
刘武周虽然已经派人去联络突厥的新任可汗处罗可汗,但突厥人根本不敢前来。
刘武周面对城外重重隋军,急得是抓耳挠腮。他常在边关,自然知晓城外诸军的实力,而善阳城外无援兵,且今年马邑郡歉收,善阳城中的粮食连一个月都坚持不了,继续打下去,只有城破一个可能。
这时其妹夫苑君璋建议刘武周,善阳城已经不可守,可突围至突厥,再作计较。
刘武周也是犹豫,给胡人做狗,是那么容易的吗?而且突厥也是黄明远的手下败将,投奔突厥有用吗?
正当刘武周犹豫不决,其部将高满政突然打开城门,向城外隋军投降。高满政全家皆死于突厥之手,与突厥有血仇,如何愿意投降突厥。他便劝刘武周向隋军投降,凭这数千将士和一座善阳城,也能保得性命,但刘武周不愿意。
马邑困于兵祸,人心厌乱,高满政利用人心所向,投降了隋军。
此时城门打开,刘云芳遂指挥诸军入城。
刘武周在城中听闻此消息大惊,吓得魂飞魄散,连忙率领亲信突围。
而守卫城中的诸将寻相、张万岁等人皆投降了隋军。
刘武周带着黄子英、苑君璋等人不到千人一路向北,被范文林率军堵在了腊河谷(今山西省朔州市东北洪涛山南)。
刘武周进退不能,被隋军尽灭于此。
在历史上席卷整个河东,给李唐带来最多败仗的一代枭雄,就这么死在腊河谷。
讨平刘武周之后,黄明远便下令,析马邑郡、雁门郡北部,于恒安镇置云中郡,领云内、善无、高柳(今山西省阳高县)三县。
同时又设代北都督府,节制云中、雁门、马邑、楼烦四郡军事,辖兵两万两千人。
以范文林为代北都督兼领云中郡太守;
崔民干为马邑郡太守;
韩元建为楼烦郡太守;
而李子仁统兵五千人,随刘云芳南下。