在永嘉之乱已露端倪时,八王之乱的胜利者司马越着意于晋廷内部的权力斗争。晋惠帝中毒身亡后,司马越拥立司马炽、杀司马覃,借以打压羊皇后的势力;不久司马越与晋怀帝司马炽又矛盾激化,于是他在外安插党羽、在内威逼晋怀帝,结果既因所托非人使洛阳失去屏障,又因心怀不臣加剧晋廷内部矛盾,并且未能及时对刘渊和石勒进行有效打击,对永嘉之乱的扩大起到推动作用。
晋怀帝永嘉三年(309年)秋季八月,刘渊命令刘聪等人进兵攻打洛阳,这是刘渊政权首次进攻洛阳。晋廷派平北将军曹武等人抵御刘聪,都被刘聪打败。刘聪长驱直入到达宜阳,自己倚仗着已经多次取胜,懈怠而不进行防备。九月,弘农太守垣延假装投降,夜间突袭刘聪的军队,刘聪大败而归。
与此同时,王浚派遣祁弘与鲜卑人段务勿尘在飞龙山攻打石勒,石勒大败,撤退到黎阳驻扎。
晋怀帝永嘉三年(309年)冬季十月,刘渊再次派遣刘聪、王弥、刘曜、刘景率领五万精锐骑兵进犯洛阳,派呼延翼带领步兵作为后续军队。十月二十一日(丙辰),刘聪等人到达宜阳。晋廷因为刘聪刚刚失败,没有料到他们这么快又来了,大为恐慌。十月二十六日(辛酉),刘聪屯兵西明门。北宫纯等人带领一千多勇士趁黑夜突袭刘聪营垒,杀了他们的征虏将军呼延颢。次日,刘聪向南到洛水驻扎。不久,呼延翼又被部下杀死,部众溃散。刘渊下令让刘聪等人撤兵回来。刘聪上奏表,坚持要留下来进攻洛阳,刘渊同意了。而司马越也环城防守。
不久,刘聪自己到嵩山祈祷,留下刘厉和呼延朗代理指挥留守的军队。司马越采纳太傅参军孙询的建议,乘虚出兵袭击呼延朗,果然取胜,杀死了呼延朗,刘厉则跳入洛水而死。王弥劝刘聪撤军,