杜衍,字叫世昌,是越州山阴人。杜衍从小刻苦磨砺品行节操,尤其重视学习。殿试中被选拔为进士甲科,任平遥县县令,皇上下诏举荐良吏,被提拔为乾州知府。后调任凤翔知府。在他被免去知府返回京城时,凤翔、乾州二府的百姓沿途迎候,说:“为什么夺去我们的好太守?”后朝廷派杜衍到河东路巡察刑狱,在巡行考察潞州时,判断冤案。高继升主持石州,有人告发继升串通蕃族图谋叛乱,高继升被捕关在狱中,长时间不能定案。杜衍分辨案卷,搞清楚高继升是受人诬陷,为之纠正,并把诬告者关押抵罪。宁化驻军将领审讯逼供,定人死罪,不根据实情,杜衍审察后予以改正。章献太后派使者安抚淮南,使者回来后还未来得及汇报,章献太后就先问杜衍身体怎么样,使者把杜衍治理地方的情况报告给了太后,章献太后感叹道:“杜衍治理地方的情况我早就知道了。”
杜衍从政谨慎细密,从不用严厉的刑法督促属下,而下属、百姓还是敬畏他的清廉整肃。后来杜衍又兼管吏部选授官职。原先吏部选授官职的规章繁杂冗长,主管官员不能尽阅,分管的下级官吏借机索要贿赂。杜衍上任之后,就让下属将吏部选授官职的规章全都呈送上来,问下属:“选授官职的规章全都呈送上来了吗?”属下回答说:“全部呈送上来了。”杜衍下功夫全部读完,全部掌握了吏部选授官职的规定。第二天,杜衍命令下属不必升堂,只在各自分管的部门听候命令,官吏任免的事情都由他自己裁决,从此吏部下属办事的官员再也无法徇私舞弊、卖官自肥。几个月后,杜衍的名声震动京城。后来杜衍调任到审官院,他管理的办法和在吏部时一样。
契丹与元昊在黄河以北交战,参知政事范仲淹安抚河东,打算出兵防御。杜衍说:“二国刚刚交战,敌方自顾不暇,势必不会来侵犯我,我们不可随便出兵。”范促淹在皇帝面前力争,并诋毁(指责)杜衍,言辞很激烈。范仲淹曾经像对待父辈一样侍奉杜衍,杜衍并不因此记恨。契丹皇帝的女婿刘三嘏因逃避罪责来归顺大宋,辅政大臣主张很好的招待收留他,借以了解契丹的内幕。谏官欧阳修也主张收留三嘏,皇帝就此征求杜衍的意见。杜衍说:“中国与邻国交往以诚信为根本,如果我们自己违背誓约,招降纳叛,那样我们就要背负理亏的责任。况且刘三嘏作为契丹皇帝的女婿,却逃离契丹来投归大宋,他为自身谋划尚且如此,还值得和此人谋划国家大事吗!接纳他有什么好处,还不如把他送回契丹。”皇帝最终听从了杜衍的意见,把刘三嘏送回到契丹。
杜衍喜好引荐贤士,而阻止投机钻营的小人,小人大都不喜欢他。庆历七年,杜衍刚进入七十岁,即上表请求退休,他被加封太子少师退休。八十岁时去世。去世前自立遗嘱,大体意思是:“不要因为长时间天下太平就忽视边防,不要因为国库充裕就挥霍浪费,应该早立储君,以安定人心。”遗嘱一点不涉及自家私事。
杜衍清正廉明不营私谋产,在南都居住了十来年,府邸房屋平常简陋,但是他在那里的起居却自觉宽裕丰足