当了皇帝的刘聪准备一雪一年前在洛阳打了败仗的耻辱,这次他要改变战略战术,先清除洛阳外围的晋朝部队,然后合围洛阳。
永嘉四年(310)十月,刘聪命抚军大将军刘粲、龙骧将军刘曜和征东将军王弥率领四万精兵进犯洛阳。这时候石勒也率领两万骑兵在大阳(今山西平陆县)与刘粲会合,他们在渑池(今河南洛宁县)打败晋朝的监军裴邈,大军**到达洛川,之后刘粲和石勒又分兵进攻洛阳。刘粲越过轘辕山,攻打梁国(今河南商丘市)、陈留郡、汝南郡(今河南息县)、颍川郡(今河南许昌市)等地,并大肆抢掠。石勒从成皋关(今河南荥阳市泗水镇)进兵,十月十三日在仓垣包围陈留太守王赞。王赞善于用兵,以逸待劳,击退了石勒,石勒撤退到文石津(今河南滑县西南,古黄河渡口)安营。
因四周遭到汉赵抢掠,接济困难,洛阳的粮食越来越少。事态紧急,晋怀帝司马炽派使者携令箭征召全国军队来支援京师。怀帝对使者说道:“转达我的号令给各位征镇将军!他们马上发兵还能够救我们,迟了就来不及了!”然而竟然没有一个人赶过来救援。本来征南将军山简(山涛之子)派遣督护王万带兵来救,可是走到半路被乱民打败,不得不退了回去。荆州刺史王澄(王衍的弟弟)亲自带兵也要赶过来救援,半路听说山简的部队失败了,掂量掂量自己的实力,也退回去了。
自从杀了王延等人后,司马越就失去了人心,众人对他渐渐不满,再加上强敌在四周掳掠,京师饥荒严重,司马越的内心也愈发慌乱。他左思右想,心一横,穿上军装进宫拜见怀帝,要求出兵讨伐石勒等人。怀帝当然不能让他走,劝说道:“现在胡人近在眼前,京城内人心动摇,朝廷社稷全仗太傅,如果您带兵出征,将使朝廷根基孤立!”但司马越态度坚决:“臣今天带兵讨伐贼人,势必要全歼他们,这样各州郡进贡的物资就可以畅通无阻地到达京师,可以重振国威。如果待在这里,等于坐以待毙。”怀帝知道再说什么也没有用了。
永嘉四年(310)十一月十五日,司马越命太尉王衍为军司,同时把朝野上下有名望的人士、战斗力强的将军和兵士全部搜罗过来,集结了四万人,离开都城洛阳往许昌进发。他留下了自己的王妃裴氏和世子司马毗,大概是在向朝廷表明自己并非逃亡,同时命嫡系龙骧将军李恽、右卫将军何伦守卫京城,监视朝廷一举一动,又命太傅府才子潘滔任河南尹,负责主持洛阳事务。
大军撤走,洛阳守卫力量薄弱,饥饿却在不断蔓延,宫殿中竟然都有人被饿死。城中盗贼横行,公然在大街抢劫,各官府无力维持秩序,只能动员官吏在周围挖壕沟建堡垒抵御盗贼。
司马越率大军行进到项县(今河南沈丘县)驻扎,任命冯嵩为左司马,他自己亲自兼任豫州牧。