洛阳之战后,很多人对司马越不满,认为司马越把所有的兵力调到山东,根本就没把皇帝的安危当一回事。少帝司马炽此时也在位一年了,手底下渐渐也有了些宠臣,这些大臣把司马越的过失到处散布,意在打击司马越的威信。司马越在洛阳安插了不少密探,听说这件事后带兵来到洛阳,把少帝司马炽身边的心腹近臣中书监缪播、太仆卿缪胤、散骑常侍王延、尚书何绥、太史令高堂冲等十多个人全部杀死。少帝干着急没办法,只能趁没人的时候悄悄在后宫跟几个心腹太监诉苦,一边痛哭一边大骂:“要说奸臣贼子,也不是哪个朝代都有。可为什么偏偏轮到我呢?”
司马越又将宫廷侍卫中所有不是自己提拔起来的武官全部罢免,然后留在洛阳,独掌朝纲,从此彻底在精神上和权力上完全掌握了西晋。
有一个叫朱诞的左积弩将军也在罢免之列,他十分怨恨司马越,便投奔到刘渊那里,称司马越和皇帝闹矛盾,人心不齐,正是攻取西晋的好时机。刘渊早有一统天下之心,既然时机来了,岂能放过,当即命汝阴王刘景带五万精兵先攻黎阳。刘景和防卫黎阳的车骑将军王堪打了一仗,占了黎阳,刘景进城后纵兵抢劫杀人,又把黎阳三万多名百姓全部扔到黄河里淹死。刘渊听说后大怒,我是要夺天下的,夺天下者先要得民心,你小子这不是让人民恨我么?遂下令道:“朕让你去杀司马氏,不是让你杀百姓!”将刘景贬为平虏将军,让他带兵返回。另派刘聪、王弥带兵攻取洛阳。
刘聪、王弥带兵来攻上党。太守庞淳带兵拒敌,连吃败仗。司马越急派淮南内史王旷、将军施融和曹超五万人北渡黄河增援。过了黄河之后,施融认为太行山险恶,对方又熟悉地形,建议王旷先不要过太行山,一方面侦察敌情,一方面等待对方出山,在平原迎击敌人最为妥当。王旷骂其胆小,并且说对方都是骑兵,山地有利于己方的步兵,根本不必担心山地作战。哪知道王旷的军队来到太行山中一个平坦而空旷的山谷中时,遭到刘聪、王弥骑兵的四面掩杀,王旷拼命反击,总算带着万余人杀出重围,逃了回去。庞淳见援军败逃,只好投降。
刘聪、王弥乘胜渡过黄河,先与镇守黄河南岸的平北将军曹武打了一仗,大胜;再和南阳王司马模从长安派来的援兵淳于定打了一仗,又胜。曹武与淳于定吃了败仗,先后逃到弘农郡。弘农太守垣延本来也准备出兵,曹武与淳于定告诉他说,刘聪和王弥太厉害了,你这点兵马根本不够他塞牙缝的,不如一齐逃吧。垣延很“重视”曹武和淳于定提供的军事情报,于是说:“既然他们这么厉害,那我就投降吧。”
曹武和淳于定吓了一跳:“我们晋朝还有战斗力,等各处勤王的军队汇合后,定能胜他,你何必害怕成这个样子?”
垣延嘿嘿一笑道:“我是诈降。”遂与二人定下计策,让曹武和淳于定带兵埋伏起来。
刘聪来到弘农郡宜阳城,垣延献城投降。刘聪有点儿怀疑,不敢入城,在城外扎下营寨。垣延派人备上好肉好酒,运到军营,大摆盛宴,还找了一些有文艺细胞的军士为刘聪表演。刘聪的军队打了好多天仗,精神也比较紧张,这天晚上得到了很好的放松,又唱又跳,又是篝火晚会,又是两军大联欢,闹到深夜方才休息。
等汉军都睡得像死猪一样了,垣延带着有文艺细胞的军士便在大营中四处放火。曹武、淳于定早就埋伏在营外了,一见火起,立刻率兵攻进营来。汉军们在联欢会上消耗了不少体力,又喝了很多酒,又累又困又醉,兵卸甲马卸鞍兵器放在床底下,冷不丁被这么一冲,大多数人都无力还手,甚至没闹清是怎么回事。曹武、淳于定和垣延在营中杀来杀去,汉军死伤无数。刘聪也被围在营中,冲不出去。
幸好王弥带着一支小部队在远处安营,听说大营被踹了,急忙带千骑来