永平十七年(公元74年),担任司马的耿恭,跟随骑都尉刘张、奉车都尉窦固、驸马都尉耿秉等打败车师,并将车师纳入东汉版图。
随即东汉朝廷在西域设置了西域都护、戊己校尉,并任命耿恭为戊己校尉,率领数百人屯兵后王部金蒲城(今新疆奇台西北)。到了永平十八年(公元75年),东汉大军回归中原之后,不甘心丧失西域的匈奴,立即卷土重来,集结数万骑兵,欲一举夺回车师。耿恭从原本就不多的人马中,挑选出三百人前往援救车师,结果在途中遭遇北匈奴大军,因寡不敌众,全军覆没。于是,匈奴大军开始围攻金蒲城。面对匈奴的围攻,耿恭便亲自登城与北匈奴人交战。耿恭把毒药涂在箭上,传话给北匈奴人说:"这是汉朝神箭,中箭者必出怪事。"于是用硬弓射箭。中箭的北匈奴人,看到伤口处血水沸涌,大为惊慌。当时正好出现狂风暴雨,耿恭军乘雨攻打北匈奴,杀伤众多北匈奴人。北匈奴人十分震恐,于是解围撤退。
此战耿恭虽然获胜,但是知道金蒲城的守备条件不是很好。所以,耿恭移师疏勒城,以做长期抗战的准备。果然没过多久,匈奴人再次卷土重来杀向疏勒城。让匈奴人没想到的是,耿恭没有坐以待毙,而是招募了几千人,主动开城迎战,结果把匈奴骑兵打得四散奔逃。初战失利的匈奴人,对疏勒城进行围攻,并将城中的水源断绝。结果,耿恭率领大家挖井取水,继续与匈奴作战。不过随着时间的推移,城中的粮草逐渐消耗一空。于是,守城的将士便用水煮铠甲弓弩,吃上面的兽筋皮革。但是无论条件如何艰苦,守城将士还是同仇敌忾,给予匈奴人很大的杀伤。
其实,东汉朝廷之所以能容忍匈奴如此肆无忌惮的攻击疏勒城,是因为汉明帝在永平十八年八月不幸去世。在朝廷大丧之机,没有及时派出救兵。之后汉章帝继位之后,就采纳司徒鲍昱的建议,派征西将军耿秉屯守酒泉,派酒泉太守秦彭(一作段彭)、谒者王蒙、皇甫援征发张掖、酒泉、敦煌三郡以及鄯善部队,共七千多人,前往救援。
建初元年(76年)正月,秦彭等人率军在柳中集结,进击车师,攻打交河城,斩杀三千八百人,俘虏三千余人,北匈奴惊慌而逃。不过汉朝大军,此时已经准备东归。只有一位军吏范羌坚持要求去援救耿恭,于是拨给他两千人马继续前往疏勒城。范羌率二千名汉军日夜兼程,克服了种种恶劣的环境,终于翻过白雪覆盖的山脉。此时的疏勒城仍然在汉军手中,只是数百人的守军,只剩下二十六人。
次日,耿恭与他地二十五名士兵随同救兵一道踏上的返乡之程。可是战斗还没有结束,北匈奴派兵追击,汉军边战边走。从疏勒城出发时,还有二十六人,沿途不断死亡,到三月抵达玉门时,已经只剩下了十三人。