汉将皇甫纪引一万精骑,据断广牧通向塞北隘口。右贤王率军南犯并州以此路为要道。供应大军辎重粮秣等,皆从此而过。右贤王本以为其兵马铁骑甚众,可一鼓而下九原,击破汉军,然后取下河朔二郡,再回军剿灭皇甫纪、北泽军。然而不能克封传车,后方被袭,右贤王遂陷于被动。
皇甫纪闻知右贤王亲自领兵来夺粮道,遂按照封传车计策,率部撤走,迂回至广牧,攻击广牧匈奴兵。
此时北泽已经率兵进驻广牧侧后方,见右贤王分兵去救粮道,遂引军前来攻击广牧。两路军马已经即将到达,封传车闻知,遂提三万精兵,攻打广牧燕军大营。
汉军三路一齐发起攻击,慕容虎与日逐王急忙率兵拒战,北泽、皇甫纪二将,引军从南北两面攻击,慕容虎让日逐王率万余兵迎战北泽,又分兵八千人,迎战皇甫纪。封传车见之,遂命军中百余辆战车在前,组成车阵,战车上皆手持长戟、身披重铠甲士,弓弩手在中,骑兵在后,对广牧胡兵形成包围之势。匈奴骑兵虽然勇悍,然被战车阵所制,骑兵不能驰骋,遂威力大减,汉军中弓弩手万箭齐发,射向匈奴兵。匈奴兵大败,死伤无数,封传车见匈奴兵已经溃乱,遂令战车营散开,以万余骑兵趁势冲击胡骑,遂大破匈奴,慕容虎不能相敌,急忙与日逐王收兵引军北逃。
封传车遂攻下广牧,此一役,从早战至黄昏,汉军斩首匈奴五千,俘获三千,马万匹。封传车见慕容虎与日逐王逃走,便令北勒与法演驻守广牧,又带领北泽、皇甫纪二将,率麾下铁骑三万人追击之。
匈奴兵大败于广牧,日逐王与慕容虎道:“汉军善于用兵,已经破我军,恐其追之,亦请和。”
慕容虎道:“现我已经得罪汉朝,汉军岂能宽恕?必不能讲和,可先退军至塞外,在作区处。”恐汉军追及,于是不顾右贤王,引兵望塞外而奔。