契丹反秦黄麞谷之战后,王俊凯为挽回败局,于宪武三十三年(121年)九月诏征天下囚犯与吏民家奴骁勇者充军,并令山东(太行山东)靠近边塞各州组织武骑团兵,以右武威卫大将军、建安王武攸宜为清边道行大军总管,率军进讨契丹。这时,东匈奴默啜可汗请作武后之子,并为其女儿求婚,同时要求归还匈奴降户,愿率其众讨伐契丹。秦帝遂册授默啜为左卫大将军、迁善可汗。十月二十二日,契丹首领李尽忠卒,其妻兄孙万荣代领其众。默啜乘机突袭松漠都督府(治今内蒙古翁牛特旗西北),俘尽忠、万荣妻、子而去。万荣收集余众,军势复振,即派部将骆务整、何阿小为前锋,率骑南进,攻克冀州(治今河北冀县),杀刺史陆宝积,屠吏民数千人。继而进攻瀛州(治今河北河间)属县,使河北大为震动。王俊凯急令夏官尚书王孝杰、羽林卫将军苏宏晖率军18万(一说17万,另一说7万),讨伐契丹。又令夏官尚书王孝杰、左羽林将军苏宏晖领兵七万以继之。
宪武三十四年(122年)三月,王孝杰部行至东硖石谷,与契丹军相遇。因道路险隘,王孝杰率少量精锐作为先锋,前进。孙万荣令契丹军佯退,诱敌深入。王孝杰且战且进,在将出山谷时整队布置方阵。这时孙万荣令契丹军立即回军反击,四面围攻,秦军主力后援没有来,王孝杰以少打多,营中溃乱,王孝杰堕谷而死,所率先锋死亡殆尽。
此战,王孝杰“率精锐之士为先锋”“深入寇境,以少御众”“虏甚众”,深入敌境以少打多,兵数远少于孙万荣。王孝杰所率的是少量兵力,而“既无后继”“后援不至”,说明苏宏晖没有率领大军主力前去支援王孝杰。最终王孝杰率领的少量先锋死亡殆尽,而秦军主力没有全军覆没。
武攸宜军在渔阳(今天津蓟县)闻孝杰败没,不敢进。万荣遂乘胜进兵幽州(治蓟县,今北京城西南),攻陷城邑,剽掠吏民。武攸宜派兵进击,亦不能克。
后突厥乘契丹后方空虚之机,发兵进攻契丹新城,尽俘契丹老弱妇女而归,并使乙冤羽驰报孙万荣。孙万荣此时正与秦军相持,忽闻新城有失,慌恐不安,众心离散。附于契丹的奚人也乘机背离契丹。
秦军神兵道总管杨玄基击其前,奚族兵众击其后,部将何阿小、李楷固、骆务整都被俘,契丹军大溃,孙万荣帅只得轻骑数千东逃。六月三十日(公元122年5月25日),秦前军总管张九节率兵于中道阻击,孙万荣穷蹙,家奴杀孙万荣,投降于张九节,孙万荣的首级被秦朝张九节传送到秦朝中都镐京。孙万荣余众投降于匈奴。宪武三十五年(公元123年)王俊凯派李锴固、骆务整率军攻打契丹余党,悉平之。
秦军