东晋五朝建立之后氏族建立的前秦逐渐强大起来,开始侵扰东晋边境。朝廷感到形势严重,迫不得已选求文武良将,以加强北边防务抵御前秦入侵。
于是谢玄拜为建武将军,兖州刺史,领广陵相、监江北诸军事。
太元三年(公元378年)秦王苻坚命其子征南大将军苻丕督率兵马四路分进,会攻襄阳。次年二月秦军攻陷襄阳,俘获晋军守将朱序。
与此同时,秦将彭超加紧围攻彭城。谢玄奉命领兵万余援彭城,他探知秦军辎重存放在留城(江苏沛县东南),便扬言派兵攻取留城。彭超急忙率军还保留城。谢 玄即命后将军何谦领兵急驰彭城,解彭城之围,接彭城守将戴遂,返回谢玄驻地。秦将彭超再回兵时,只占得一座空城。秦军继续南下,又攻占淮阴,留下邵保驻 守。
五月,秦军占领盱眙,并以六万人攻下晋幽州刺史田洛驻守的江北要镇三阿(江苏高邮西北)。晋军惊散溃败,东晋门户大开,形势十分危急。
于是谢玄奉命率“北府兵”二万余人自广陵援救三阿。谢玄军进至白马塘,俱难派部将都颜率骑兵迎击晋军,交战于塘西,晋军阵斩都颜。谢玄挥兵进至三阿城 下,与围城的彭超,俱难所率秦军展开大战。秦军大败,彭超、俱难“相率北走,仅以身免”。晋军趁势收复了淮北地区。但东廷还是下令晋军南撤,放弃彭 城,下邳二地。谢玄回到广陵,进号冠军将军,加领徐州刺史,封东兴县侯。
太元八年(公元383年)秦王苻坚决定征调金国兵马,大举伐晋。苻坚亲率大军从长安出发“戎卒六十余万,骑二十七万,旗鼓相望、前后千里。”九月,苻坚抵达项城,苻融进至颍口(安徽寿县西南正阳关颍水入淮河处)。
东晋命尚书仆射谢石为征讨大都督,谢玄为前锋都督,率领辅国将军谢琰、西中郎将桓伊等部共八万兵马前往迎敌,又命龙骧将军胡彬率水军五千救援寿阳。谢玄 受命后对如何以仅仅八万之兵抵御秦军百万之众,心中没有把握。他特意去向主持朝政的叔父宰相谢安请教御秦方略。谢安未告之任何方略,却召集谢玄及亲朋子侄 郊游,并约谢玄下棋,似乎并无敌情,至夜方回。最后仅以“各当其任”四字为勉。
十月,苻融前锋部队攻克寿阳,慕容垂则进占郧城(湖北 安陆)。晋援军胡彬退保硖石(安徽风台西南)。苻融进兵围攻硖石,同时派梁成率军五万驻守洛涧(安徽怀远西南),以遏止晋军救援。梁成曾屡败晋军,所以谢 石、谢玄等在离洛涧二十五里处扎下营寨,不敢轻进。胡彬军粮草将尽,遣使密告谢石,信使为秦军所获。苻融得知晋军粮尽后,飞报苻坚:敌少易擒,只恐逃走, 宜速进兵。苻坚得报后,将大军留置项城,自率轻骑八千,兼程赶赴寿阳。
苻坚欲依仗秦军声势,迫使晋军不战而降,命原晋襄阳守将朱序为 使巨前往劝降。朱序来到晋军营中,秕下对谢石、谢玄等说:“若秦百万之众尽至,诚难与为敌。今乘诸军未集,宜速击之。若败其前锋,则彼已夺气,可遂破 也。”谢石得知苻坚已到寿阳,畏惧而不愿出战。谢琰则力劝谢石听从朱序之言。谢玄反复权衡利弊后,也赞同速战。
十一月,谢玄派遣广陵相刘牢之率北府精兵五千,夜渡洛涧奇袭秦将梁成军垒,斩杀梁成,王显等十将,秦军惊溃。刘牢之断敌归津,纵兵追击,秦军败逃无路,争赴淮水,死伤近半。谢石、谢玄乘势指挥晋军水陆继进,扎营于寿阳城外,八公山下。
苻坚得知晋军临近,登城观望,见东晋兵马强悍,部队严整,又看到八公山上草木繁多,也以为都是晋兵,便对苻融说:“此亦劲敌,何谓弱也?”开始显出畏惧之色。
秦军张蚝迎战晋军谢石部,谢石兵败。谢玄、谢琰率本部兵马,严阵以待。张蚝见无机可乘,退过淝水,临水列阵。谢玄因秦军阵逼淝水,无法强渡,又恐秦军主 力到来,难以相争,思虑良久定下决心,遣使致书苻融:“君悬军深入,而置阵逼水,此乃持久之计,非欲速战者也。若移阵少却,使晋兵得渡,以决胜负,不亦善 乎。”秦军诸将都认为:宜阻淝水,莫令得上,我众彼寡,势必万全。苻坚却说:令军少退,待晋兵半渡。我以铁骑数十万向水逼杀,必胜无疑。苻融也同意此计, 于是下令临水列阵的秦军向后退却。
秦军一退,阵势混乱,兵将不知所以然,朱序等东晋降将又在阵后大呼:“秦兵败矣!”秦军兵马愈发退 而不止。谢玄亲率谢琰、桓伊等精兵八千,涉渡淝水,直冲秦阵。苻融见秦军阵容已乱,急驰入阵中,想指挥秦兵停止退却,反击晋军,不料乘马在乱军中摔倒,晋 兵冲到,杀死苻融。秦军失去前线统帅,大败奔逃,“自相蹈藉技术死者不可胜计,淝水为之不流”。“其走者闻,皆以为晋兵且至,昼夜不敢息。”谢玄 挥兵追击,直至青岗(安徽寿县西北),秦军溃逃途中,“草行露宿,重以饥饿,死者什七八。”苻坚身中流矢,单骑奔向淮北。晋军获得苻坚所乘云母车和堆积如 山的军资器械及骡马十余万。晋军收复寿阳,朱序等将也同归东晋,朝廷派遣殿中将军慰劳,给谢玄进号前将军、假节,谢玄固让不受。
淝水之战后,谢安向朝廷提出,宜乘苻坚丧败的时机,出兵北上伐秦,开始中原,以图恢复旧部基业。
太元九年(公元384年)八月,东晋命徐、兖二州刺史谢玄为前锋都督,率豫州刺史桓石等部兵马沿涡河,颍河北进伐秦。谢玄兵至下邳,秦徐州刺史赵迁闻风 丧胆,放弃彭城逃走。谢玄率军进驻彭城后,派彭城内史刘牢之领兵攻打驻守鄄城的秦兖州刺史张崇,张崇败走。晋军占领鄄城,河南城堡纷纷前来归附,兖州很快 全部平定。谢玄又采用督护闻人的建议,分水修堤,疏通河道,解决了北伐军粮的运输问题。
十月,谢玄命阴陵太守高素领兵攻秦青州(山东 益邵),晋军进至琅,秦青州刺史朗归降。谢玄乘势挥兵进伐冀州(河北冀县),分遣诸将攻占要地。刘牢之攻占(山东茌平西南),济阳太守郭满攻占滑台(河南 滑县东),奋武将军颜雄渡河立营。苻坚之子苻丕派部将桑据屯兵黎阳,谢玄命猛将刘袭领兵乘夜奔袭,大败桑据,攻克黎阳(河南浚县北)。苻丕此时正在邺城 (河北磁县南)。被反秦复燕的慕容垂围攻,无力抗晋,遣使请降。谢玄许降,此时晋军声威大震,三魏皆降。北伐晋军已经平定了兖青、司、豫四州之地,东晋加 封谢玄郡督徐、兖、青、司、冀、幽、并七州军事。
在谢玄统兵北伐接连取胜的同时,东晋朝廷内部的斗争又趋激烈,谢安受到会稽王司马道子的排挤,自求北征,出镇广陵,不久病逝。司马道子又以“征役既久,宜置戍而还”为名否定了谢玄巩固北伐成果的规划,削去谢玄的兵权,命他回镇淮阴。
谢玄功业不成,又遭排斥,心灰意冷,上书说:“追寻前事,可为寒心。臣之微身,复何足惜,区区血诚,忧国实深。”不久,谢玄在归途中身染重病,后于太元十三年(公元387年)正月病逝,终年四十六岁,追赠为车骑将军。