帝以他体貌严正，任他为尚书郎，掌管机要。汉和帝时任司隶校尉，官至魏郡太守。永元十年（98年），任少府，转大司农，有政绩。永元十四年（102年）十一月由大司农拜司空。永元十六年（104年）十月接替张酺为司徒。汉殇帝延平元年（106年）正月接替张禹任太尉，和太傅张禹一起录尚书事，百官总己以听。汉安帝即位，封他为龙乡侯。永初元年（107年）因为地震、暴雨、流民等原因，被策免太尉，张禹继为太尉。三公因灾异遭到免职，从徐防开始。