太尉司马乂带着惠帝打败了司马颖后,回军迎击攻入洛阳的张方,张方的士卒远远看到皇帝的御驾来了,慑于皇帝的龙威,全都畏缩不前,继而后撤,司马乂的军队趁机追杀,张方部队大败,被杀死五千多人。

张方军队撤退到洛阳西边的十三里桥驻扎,士兵们都惶恐如惊弓之鸟,想连夜逃走,张方不服输,给大家打气道:“胜败是兵家常事,善用兵者会转败为胜,我们要出其不意,不退反进,构筑工事,这才妙计啊!”众将士一听有道理,就趁夜色掩护,悄悄逼近距洛阳城七里处,修筑了多层堡垒,抢夺外面仓库的粮食作为军粮。

再说司马乂。获胜后,他本认为张方已经不足为虑,现在突然接到了张方在城外构筑堡垒的消息,赶紧率领军队进攻,却没有攻克。朝廷大臣认为司马乂、司马颖是亲兄弟,打断骨头连着筋,他们的矛盾是可以调和的,就派能说会道的中书令王衍等人到司马颖那里劝说,说如果司马颖罢兵,可以把全国一分为二,他和司马乂各占一方,但司马颖不答应。司马乂又亲自给司马颖写信要求和解,司马颖回信说:“如果你杀了皇甫商等人,我就率兵回邺城。”杀了皇甫商就是斩了自己的左膀右臂,这条件司马乂当然也不能接受。

谈不拢就继续打吧,司马颖亲自率兵进攻洛阳。另一方面,张方坏点子多,他命人把千金堨(古代水利工程)中的水放掉,使洛阳城内水井枯竭,舂米的水碓也因无水可用而停止工作,朝廷无奈,只能发布动员令,让王侯公爵家中的奴婢动手捣谷米以供应军粮。但城池被包围,城中粮食渐渐短缺,每石米的价格被抬升到一万钱;不仅粮食短缺,人员也一样,于是一品官员不在军营的,家中十三岁以上的男子全部充当后备役部队,又征调奴仆充实军队。总之,为了抵御来自司马颖和张方的攻击,洛阳全城动员。

司马乂府中主簿祖逖对司马乂说道:“雍州刺史刘沈忠义可嘉,善于用兵,他的兵力足以对付河间王司马颙,您应当命刘沈出兵,这样司马颙出于自保,必定会召张方回去救援,这是上策。”司马乂同意了。刘沈接到皇帝的命令后,命人骑快马向各郡传达,各郡纷纷响应。刘沈组织自己治下七个郡的一万多将士,向长安进发。

司马乂派皇甫商拿着惠帝司马衷的亲笔诏书秘密出发,去金城郡太守游楷等处让他们停止攻打皇甫重,并命令皇甫重出兵讨伐司马颙。皇甫商化妆成普通百姓,低调行路,走到了新平郡(今陕西彬县)。无巧不成书,他在这里遇到他的一个堂外甥,而这个堂外甥又一直非常憎恨皇甫商,就向司马颙告发了皇甫商的行踪。司马颙大喜,平时找都找不到的人,今天竟然得来全不费工夫,立即命人逮捕了皇甫商,将他斩首。

司马乂依仗洛阳城池坚固,多次击退司马颖的攻势,斩杀六七万人。即使是在战事最紧张的时候,司马乂对皇帝司马衷也非常尊重,礼节一如平常。城中粮食日渐匮乏,但将士们依然顽强抵抗。张方这边吃不消了,他认为洛阳攻陷不了,打算带部队回长安。但正在这个时候,洛阳城内突然发生变故。

殿中各将领和三部司马疲于奔命,起了异心。他们认为这样下去肯定不是张方的对手,不如干掉司马乂投降张方,于是左卫将军朱墨等人逼着东海王司马越牵头,于太安三年(304)正月二十五日突然冲入司马乂大营,逮捕了司马乂。

二十六日,司马越在禀告司马衷后,解除了司马乂所有官职,把他囚禁在金墉城,大赦天下,改年号为“永安”。但是等他们打开洛阳城门以后,才发现张方的军队已经疲惫不堪,军容不整,根本不是皇家军队的对手,一些将领们有些后悔,打算解救司马乂,集结队伍重新对抗张方。司马越害怕司马乂出狱后报复自己,决定杀了他,断绝大家反攻的想法。黄门侍郎潘滔派人将城内的事秘密通知了张方,对司马越说道:“王爷不用担心,自会有人替您除去隐患。”

太安三年(304)正月二十八日,张方部将郅辅率领三千大军到金墉城带走了司马乂。张方为人极为残忍,司马乂被带到大营后,张方命人点起大火,把司马乂架起来放到火上。司马乂被活活烤死了,死时年仅二十八岁,他的惨叫声传出去很远,就连张方的士兵听到后也无不落泪。八王之乱中第五王的统治终结了,当权一年又两个月。司马乂被埋葬到洛阳城东,他的旧属只有刘佑一人前去送葬。张方倒是觉得刘佑是个义士,没有追究。

大将军司马颖率军进入洛阳,大概出于安全考虑,很快就又返回了邺城,让朝中公卿大臣都到邺城向他请罪。司马衷下诏任命司马颖为丞相,司马越为守尚书令(即代尚书令)。司马颖派奋武将军石超率军五万把守洛阳的十二个城门,把朝中过去和自己有过节的人全部杀掉,宫廷禁卫军也全部换上了自己的嫡系部队。他上书奏请任命卢志为中书监,但仍让他留在邺城,处理丞相府的日常事务。

河间王司马颙本在郑县(今陕西华县)驻扎,声援张方部队,听说雍州刺史刘沈率军进攻长安,便派军迎战,结果大败,惊慌之下赶紧退守长安,并急召张方回军。张方命士兵在洛阳掳掠了官家私家的奴婢一万多人后匆忙西归,半路军中缺粮,就把人杀了混在牛马肉中充饥,场面惨不忍睹。

刘沈率军渡过渭水,所向披靡,司马颙屡战屡败。刘沈派安定太守衙博、功曹皇甫澹带五千精兵杀入长安城内,一直冲到司马颙军营前,他自己带兵作为后援,可是却因故未能按时到来。冯翊太守张辅发现衙博等人是孤军奋战,后继无援,大喜,带部队拦腰攻击,衙博和皇甫澹不敌被杀,剩下的残余士兵逃出长安。

张方派他的部将敦伟夜袭刘沈,刘沈不敌,被敦伟抓获,带到司马颙面前。刘沈对司马颙说:“您对我有知遇之恩(司马颙曾经让刘沈做军师),但君臣之间的大义更重。我被您抓住,今天纵然被剁成肉酱,也无怨无悔。”司马颙听后暴跳如雷,命人对刘沈先施以鞭刑,而后腰斩。新平太守张光多次为刘沈出谋划策,司马颙质问他,张光说道:“就是因为刘沈不采纳我的计策,大王才能有今天的胜利!”司马颙哈哈大笑,认为他是个人才,邀他一起喝酒作乐,还上书推荐张光为洛阳的右卫司马。