是遗腹子，幼时其母改嫁河阳钱家，十五岁时兄长虐待他，提剑砍其头，出血数升，被姑姑救走。后来他到母亲那里，继父不肯收留，只好在孟、洛等地流浪。一富户相里氏看他仪表不凡，以女嫁之。大中祥符元年（1008年）进士，任扬州观察推官。在平遥县、干州、凤翔府担任地方官，有惠政，离任时，百姓夹道送至境边说：“何夺我贤太守也！”章献太后对他很赏识，封“祁国公”。仁宗景祐三年（1036年）诏令御史中丞杜衍裁汰三司冗员，有吏员500余人到杜衍住所叫骂，“乱掷瓦砾”，此事遂不了了之。宝元二年（1039年）复知