杜佑早年以门荫入仕,补任济南参军、剡县县丞,后投奔润州刺史韦元甫。韦元甫因其父对自己有恩,遂以故人之子对待杜佑。一次,韦元甫办公时遇到难以决断的案件,恰见杜佑在侧,便随口征询杜佑的意见。杜佑应答如流,所言都切中要害。韦元甫大喜,当即表奏他为司法参军。后来,杜佑随韦元甫到浙西、淮南任职,深受信任,累迁至检校主客员外郎。
大历六年(765年),韦元甫病逝。杜佑由淮南入朝,担任工部郎中,充任江西青苗使,后历任抚州刺史、御史中丞、容管经略使。大历十四年(779年),唐德宗继位,杨炎拜相。杜佑也被征召回朝,历任工部郎中、金部郎中、江淮水陆转运使、度支郎中兼和籴等使、户部侍郎、判度支,并负责河北战事的粮草转运事务。建中三年(782年),杜佑得罪权相卢杞,被赶出朝廷,外放苏州刺史。他因老母在堂,不愿赴任,改任饶州刺史。兴元元年(784年),唐德宗因泾原兵变逃往兴元。杜佑被任命为岭南节度使,兼任御史大夫。
贞元三年(787年),杜佑回朝,担任尚书左丞,后出任陕州观察使。贞元五年(789年),杜佑升任检校礼部尚书、扬州大都督府长史,并充任淮南节度使。他在扬州设置营垒三十余所,整饬兵马,后因母丧丁忧。唐德宗却将他夺情起复,改授为刑部尚书、检校右仆射。贞元十六年(800年),徐州节度使张建封病逝,士卒拥立其子张愔为主。唐德宗遂任命杜佑为淮南节制检校左仆射、同平章事,兼徐泗节度使,让他讨伐张愔。杜佑调集大批战船,命部将孟准为前锋,但因孟准兵败,不敢进兵。朝廷无奈,只得将徐州划给张愔,又将濠州、泗州划归淮南,并命杜佑兼任濠泗等州观察使。
贞元十九年(803年),杜佑拜相,担任检校司空、同中书门下平章事,并充任太清宫使。永贞元年(805年),唐德宗病逝,唐顺宗继位。杜佑进位检校司徒,并兼任度支盐铁使。当时,王叔文任度支盐铁副使,锐意进行革新,希望得到杜佑的帮助,但杜佑没有答应。不久,王叔文失败,杜佑又举荐李巽为副使。元和元年(806年),唐顺宗病逝,唐宪宗继位。杜佑再次摄冢宰,并把度支盐铁事务全部让给李巽。当时,度支使事务繁杂,没有条理。杜佑把营缮事务划归将作监、木炭事务划归司农寺、湅染事务划归少府,减轻度支使的工作。不久,杜佑进拜司徒,封岐国公。后来,河西党项部落暗中勾结吐蕃,入侵唐朝。边将贪功,请求出兵讨伐。杜佑反对用兵,上疏历述前代开边黩武、兵连祸结的教训,并指出党项寇边是因边将贪暴所造成,建议慎选良将,加固边防。
元和二年(807年),杜佑请求致仕。唐宪宗不准,允许他每隔三五日到中书省一次,仍旧参与朝政。杜佑每次入宫奏事,唐宪宗都加以优待,尊称司徒,而不直呼其名。元和七年(812年),杜佑患病,四次上表皇帝,请求致仕。唐宪宗无奈,只得让他以光禄大夫、太保之职致仕,但仍让他在每月初一十五上朝面君。同年十一月,杜佑病逝,终年七十八岁,追赠太傅,谥号安简。