江南安定后,河北一带却仍有乱事。太傅司马越虽然出镇许昌,但一切朝政事务仍然由他主持,怀帝没有实权。司马越以邺城空虚为由,特征北将军驻守邺城,并令王衍为司徒。怀帝自然答应。
顿邱太守魏植为流民所迫,率领部下五六万人大掠兖州。太傅司马越赶紧命苟晞带兵支援,苟晞出守无盐,派苟纯据守青州。苟纯嗜杀,比苟晞还要严厉,民间都流传歌谣:“一苟不如一苟,小苟毒过大苟。”不久,苟晞打败魏植,回到青州。王弥却又蠢蠢欲动,召集数万党羽分别进犯青、徐、兖、豫四州。苟晞奉诏出征,连战不胜。
司马越只能制内,不能制外。王弥从小路攻入许昌,又从许昌进逼洛阳。司马越派王斌率领五千士兵护卫京师。凉州刺史张轨也派督护北宫纯领兵支援。统将北宫纯入城见了王衍,和王斌会师,相约出战。北宫纯挑选一百多名勇士作为前锋,然后疾驰而出与王弥对战。刚开始交战,北宫纯便挥动令旗,一队身长力大的壮士身跨铁骑,手持利刃,不管枪林箭雨,硬着头皮朝城内冲去。凉州兵也不甘落后,拼了性命,一齐跟入。王弥党羽心慌意乱,纷纷退后。北宫纯趁势追杀,王斌也率兵跟进,杀得王弥部队大败,抱头东窜。
此时,都城里又冲出一支生力军,来接应北宫纯、王斌。军官是左卫将军王秉。王秉一路人马继续追击王弥,一直追到七里涧,王弥以为来军较弱,当下勒马横刀和王秉对战。众人勉强从命,但略一交手,便又溃散。王弥只得与部下王桑投奔汉主刘渊。刘渊和王弥是旧交,当即便派使者迎接。王弥大喜,随使者去见刘渊。刘渊当即任命王弥为司隶校尉,并任命王桑为散骑侍郎。刘灵也前来投奔刘渊,被封为平北将军。刘渊让他们做向导,命刘聪带领数千士兵一同朝河东进袭。北宫纯从洛阳回师,途中遇到刘聪的军队,北宫纯带兵冲杀过去。刘聪突然遭袭,手忙脚乱,匆匆收兵逃了回去。北宫纯回到凉州,向张轨禀明情况。
刘渊听说刘聪兵败,未免失望。他趁着秋高马肥,麾兵南下。到了平阳,太守宋抽惊慌失措,弃城南逃。刘渊占领了平阳,再攻河东。河东太守路述出城迎战,因寡不敌众退守城中。刘渊率兵猛攻,路述坚持死战,力竭而亡。刘渊连得数郡,便移居蒲子。上郡四部中鲜卑陆逐延、氐酋单征都向刘渊投降。刘渊又派王弥、石勒兵分两路攻打邺城。征北将军和郁贪生怕死,将邺城拱手相让。刘渊雄心得逞,公然称帝,大赦境内,改元永凤,改蒲子城为汉都。
刘渊称帝后,两河大震。晋廷派豫州刺史裴宪戍守 白马,车骑将军王堪镇守东燕,平北将军曹武驻守大阳。刘渊令石勒、刘灵率三万士兵攻打魏、汲、顿邱三郡,百姓纷纷降附。石勒和刘聪请刘渊从中挑选五万壮丁作为士兵。魏郡太守王粹领兵抵御,被石勒活捉,押到三台,一刀毙命。
晋怀帝永嘉三年(309年),汉太史令建议迁都,刘渊马上下令迁都平阳。恰巧汾水边有人拾得玺篆,献给刘渊,刘渊认为这是祥瑞之物,再次改元,以“河瑞”二字为年号。
汉大将军石勒率领十多万兵马进攻钜鹿、常山,以张宾为主谋。张宾屡次向石勒献策,无一不是好计,因而石勒将他视为亲信,采用他的计策一路势如破竹。
弘农太守垣延探知汉兵骄傲懈怠,用了一条诈降计,亲自参拜刘聪,假意投降。刘聪沿途纳降,丝毫不怀疑。谁知到了半夜,营外喊声连天,营内呼声动地,外杀进,里杀出,刘聪的军营立刻被晋军踏平。刘聪慌忙上马,率众而逃,侥幸保全了性命。垣延上表报捷,朝臣称庆。不料过了二十来天,刘聪等人又杀到宜阳,前有精骑,后有锐卒,更为猖狂。