晋成帝咸和二年(327年),杜瑗出生在交趾郡府(今
越南河内)。他聪明好学,成年后以才学著名。杜瑗历任交趾郡太守、
日南郡(今越南广治)太守、
九德郡(今越南
荣市)太守。
当时,九真郡太守
李逊是交州地区的豪强,势力庞大。
晋孝武帝太元五年(380年)十月,李逊听说东晋朝廷派出滕遯之接任交州刺史的消息后,派出两个儿子率部截断水陆交通,并在各大要塞布下重兵,企图割据交州、阻止
朝廷命官莅任。杜瑗率军击败李逊的父子军,杀李逊,铲除了地方势力,迎交州刺史上任,因功被东晋朝廷升任为
龙骧将军。
滕遯之在任上十多年,多次与南邻
林邑国交战。滕遯之任满回朝后,
林邑王
范胡达就大举入侵交州,连破日南、九德、九真三郡,又包围了州府交趾郡,形势危急。杜瑗与其第三子杜玄之死守交趾郡,奋力抗击林邑入侵,终于击退林邑军队,乘胜收复三郡。东晋朝廷乃擢升杜瑗为交州刺史,这是
晋安帝隆安三年(399年)的事。
当时东晋陷入混乱,先后爆发
王恭之乱、
孙恩之乱、
桓玄之乱等内战,杜瑗坚守南疆,效忠晋室,在元兴三年(404年)
刘裕反正以后,杜瑗被加号为
冠军将军。
义熙年间,林邑王
范胡达再次频繁侵略交州,于义熙三年(407年)攻陷日南郡,杀长史,杜瑗派遣海逻都督阮斐讨破之,斩获甚众。孙恩余党
卢循割据广州,表面接受朝廷任命的
征虏将军、
广州刺史、
平越中郎将之职,暗中意图北伐
建康,遂遣使联络杜瑗,杜瑗斩杀了来使。不久后,杜瑗于义熙六年(410年)去世,享年八十四岁,东晋朝廷追赠右将军,其子
杜慧度接任交州刺史。