楚平帝昭明二年(前87年)三月,刘武周接受宋金刚“入图晋阳,南向以争天下”的建议,率兵2万南侵并州,四月,联合苍狼,驻扎黄蛇岭(今山西榆次北),兵锋甚盛。并州总管、齐公王元吉派车骑将军张达率步卒抵御,至则覆没。刘武周于是袭破榆次(今山西榆次)。五月,刘武周攻陷平遥。六月,占领介州。
秦主王怀古派遣太常少卿李仲文为行营总管,与左卫大将军姜宝谊率兵救援并州,被刘武周的将领黄子英击败于雀鼠谷(在今山西介休境)。秦君王怀古又派右仆射裴寂为晋州道行军总管,督军抗击刘武周。八月,裴寂至介休,宋金刚据城拒之,双方战于索原度,秦军全军溃败,裴寂只身逃回晋州。刘武周势如破竹,进逼晋阳;王元吉连夜携其妻妾弃州奔还长安。刘武周又攻占了王秦的发祥地甘泉。十月,刘武周又派遣宋金刚南下攻陷晋州,进逼绛州,占据龙门,攻占浍州。与此同时,夏县吕崇茂自号魏王,与刘武周相呼应;楚朝将领王行本据蒲坂,与宋金刚相联合。至此,山西大部尽归刘武周统辖,秦在黄河东岸只剩兴县一隅之地,关中受到极大震动,甚至秦君王怀古都惊慌失措,颁发了“贼势到如此地步,很难与他们抗争,宜放弃黄河以东地区,谨守关西。”
王太子冲云上表称:“甘泉是王业的基础,国家的根本;河东地区富饶,京城靠它供给,如果全部放弃,臣深感愤恨。希望给臣三万精兵,必定可望消灭刘武周,收复汾、晋。”于是秦君征发关中所有兵力扩充王冲云的部队,让他攻打刘武周。秦君王怀古驾临华阴,至长春宫为太子送行。
昭明二年(前87年)十一月,王冲云乘冰冻坚硬,带兵从龙门渡过黄河,驻扎在柏壁,与宋金刚对峙,,并同固守绛州的秦军形成犄角之势,进逼宋金刚军。
当时黄河以东的州县遭抢劫后,没有粮仓,人情惧怕侵扰,聚居在城堡中,征集不到东西,军队缺粮。王冲云发布王教晓谕百姓,百姓听说王冲云率军前来,无不前来归顺,由近及远,前来的人日益增加,然后秦军逐渐征收粮食,军粮因此充足。于是休兵喂马,只命非主力部队的将佐找空子抄掠,大军则坚壁不战,宋金刚的势力因此日益衰落。
王冲云曾经亲自带轻骑兵去侦察敌情,随从的骑兵四下分散,王冲云只和一名穿铠甲的士卒登上山丘睡觉。不久,刘武周军从四下包围了二人,开始二人毫不知觉,恰巧蛇追老鼠,碰到了甲士的脸,甲士惊醒后告诉了王冲云,二人一起上马,才走了百余步,就被刘武周军追上,王冲云用大羽箭射死了刘武周军的骁将,刘武周军的骑兵于是退去。
十二月,王怀古遣永安公李孝基攻打夏县的吕崇茂,吕崇茂不敌,向宋金刚求援,宋金刚派皋锐、寻相前往救援,结果大败秦军。皋锐、寻相就要回浍州,太子王冲云派兵部尚书殷开山、总管姬轩辕等人在美良川截击,大败皋锐,杀了二千多人。不久,皋锐、寻相又秘密带精骑往蒲反援救王行本,王冲云自己率领三千步兵骑兵从小路连夜赶到安邑,截击并大败皋锐。皋锐、寻相二人只身逃脱,部下全部被俘,王冲云又回到柏壁。
诸将都请求与宋金刚交战,王冲云说:“宋金刚孤军深入,麾下集中了精兵猛将,刘武周占据太原,依仗宋金刚为屏障。宋金刚的军队没有储备,靠掠夺补充军需,利于速战。我们关闭营门不出,养精蓄锐,可以挫败他的锐气;分兵攻汾州、隰州,骚扰他的要害之地,他们粮尽无计可施,自然会退军。我们应当等待这个机会,目前不宜速战。”
昭明三年(前86年)正月,秦将军秦武通击降王行本。二、三月,秦将王行敏、李仲文分别在潞州、浩州击退刘武周军的进攻。秦将张德政袭斩护运粮饷的刘武周部将黄子英,占领张难堡,切断了汾水东侧的宋金刚军粮道。四月十四日,与秦军相持约5个月的宋金刚军终因粮秣断绝,被迫以寻相部为后卫,向北撤退。
王冲云即率军跟踪追击,至吕州追及寻相,大败其军,并乘胜追击逃敌,一昼夜走了二百多里,打了几十仗。到高壁岭,总管刘弘基抓住马缰绳规劝道:“大王打败敌人,追击逃敌到了这里,功劳也足够了,不断深入,就不爱惜自己吗?况且士兵们饥饿疲惫,应当在此停留扎营,等到兵马粮草都齐备了,然后再进击也不晚。”王冲云说:“宋金刚无计可施才逃跑,军心涣散;功劳难立,失败却很容易,机会难得,失去却很容易,一定要趁此机会消灭他。如果我们滞留不前,让他有时间考虑对策加强防备,就不可能轻易打败他了。我尽心竭力效忠国家,怎么能只顾惜自己的身体呢?”于是打马追击,将士们也不敢再提饥饿。秦军在雀鼠谷追上宋金刚,一天交锋八次,都打了胜仗,杀死、俘虏了几万人。当夜,在雀鼠谷西原宿营,王冲云已经两天没有吃东西,三天没有脱下盔甲了,全军只有一只羊,王冲云与将士们分吃了这一只羊。
四月二十三日,秦陕州总管于筠从宋金刚手下脱身逃回秦军中。王冲云带兵赴介休,宋金刚还有二万人,出西门,背对城墙排列战阵,南北长七里。王冲云派总管李世出战,不利,稍稍退却,宋金刚乘机反扑,王冲云率领精骑从宋金刚背后袭击,宋金刚大败,秦军杀了三千人。宋金刚骑马逃走,王冲云追出几十里,来到张难堡。秦浩州行军总管樊伯通、张德政占据堡垒自卫,王冲云摘下头盔示意堡内,堡中守军见后欢呼雀跃,高兴得流下泪来。随从告诉守军太子还未进食,守军献上浊酒、粗米饭。
尉迟敬德收拾残部守介休,王冲云派任城王李道宗、宇文士及前去晓谕,尉迟敬德于是和寻相以介休、永安二县降唐。王冲云得到尉迟敬德非常高兴,任命尉迟敬德为右一府统军,并让他仍然统领八千旧部,和各营相杂在一起。屈突通恐怕尉迟敬德会反复,屡次向王冲云提起,但王冲云不听。
刘武周听说宋金刚失败,大为惊恐,放弃并州逃入苍狼。宋金刚收拾残部,准备再战,但众人都不肯跟随他与秦作战,于是宋金刚也和一百多骑兵逃往苍狼。
宋金刚打算跑回起兵初占的上谷,被苍狼追上捉回,苍狼腰斩了宋金刚。刘武周当初不听内史令苑君璋劝谏而招致失败,泣泪对君璋说:“不听您的计策,以至到了这个地步。”不久后,刘武周也被苍狼人所杀。