范曄《后漢書》曰:齊殤王子都鄉(xiāng)侯暢來吊國憂,竇憲遣客刺殺暢,發(fā)覺,憲懼誅,自求擊匈奴以贖死。會南單于請兵北伐,乃拜憲車騎將軍,以執(zhí)金吾耿秉為副,大破單于。遂登燕然山,刻石勒功,紀漢威德,令班固作銘。
公元88年,章帝卒,和帝即位,年僅10歲,竇太后臨朝。竇憲成為國舅,很快即被起用為侍中,控制大權(quán)。竇憲專橫跋扈,無視朝廷法律,隨意殺人。齊殤王的兒子劉暢,因章帝喪事來朝吊問,乘機討好了竇太后,得到一個宮內(nèi)職位。竇憲怕劉暢受寵,妨礙他專擅朝政,競派人將他刺殺。后來,事情暴露,竇憲被關(guān)在宮內(nèi),等候治罪。這下竇憲著了慌,請求率軍北征匈奴以贖死罪。當(dāng)時正逢南匈奴請兵攻伐北匈奴,朝廷便拜竇憲為車騎將軍,率大軍出塞。竇憲北征匈奴就是在這樣的形勢下出現(xiàn)的。班固不知其中內(nèi)情,隨軍出發(fā),任中護軍,參與軍中謀議。
大軍從朔方三路北襲,竇憲遣各部將及匈奴左谷蠡王等,率精騎萬余,在稽落山(今蒙古達蘭札達加德西北額布根山)大破北匈奴軍隊,前后俘獲招撫匈奴部眾二十萬人,窮追北單于直至燕然山,大獲全勝。竇憲與副將等登上遠離邊塞三千余里的燕然山(蒙古杭愛山脈),由班固撰寫《封燕然山銘》文,刻石紀功,頌揚漢軍出塞三千里,奔襲北匈奴,破軍斬將的赫赫戰(zhàn)績。班固還撰有《竇將軍北征頌》一文,對竇憲北征匈奴大加歌頌。竇憲班師后出鎮(zhèn)涼州。第二年,北匈奴單于因大敗之后勢力衰弱,派親王向竇憲通報希望覲見東漢皇帝,請求派使者前來迎接。竇憲上奏,派遣班固以中護軍兼代中郎將職務(wù),與司馬梁諷一起,帶領(lǐng)數(shù)百人騎馬出居延塞(今甘肅額齊納旗)迎接,正遇上南匈奴出兵打敗北匈奴,班固一行到達私渠海(在稽落山西北),獲知北匈奴已遁走而折回。永元三年(公元91年),竇憲派部將出兵北擊,此后北匈奴向西遠徙,東漢最后解除了匈奴的威脅。