天宝十四年(755),安史之乱爆发,唐玄宗任命郭子仪为朔方节度使、灵武郡太守,由北路东进,屡败叛军,斩叛将围万顷,继而收复云中(大同)、马邑(山西朔县),向东进入东陉关,这一连串的战绩,使郭子仪得到御史大夫的官职。天宝十五年(756),叛将蔡希德攻陷常山郡(河北正定),河北尽失。郭子仪和河东节度使率师下井陉(xíng),拔常山,然后攻入赵郡,俘敌四千。叛将史思明收集亡散士卒,合兵五万,郭子仪、李光弼屯驻恒阳(河北曲阳),深沟高垒,坚壁自固,叛军来则守,叛军去则追。白天炫耀军威,夜间偷袭敌营,使史思明将士终日不得休息。当敌军疲惫不堪之际,郭子仪率军出击,于嘉山大败史思明,杀敌四万,史思明狼狈逃至博陵(河北定县)。于是,河北中部十余州郡深受鼓舞,纷纷诛杀叛军,归顺朝廷。
正当郭子仪在河北胜利进军,准备直捣叛军老巢范阳的时候,唐军在潼关坚守的哥舒翰被叛军打败,全军覆没,叛军长驱直入,占领了长安。郭子仪听到潼关失败,率军退入井陉,河郡县又为叛军占领。
长安陷落,玄宗仓惶出逃四川,马嵬(wéi)驿发生兵变,奸臣杨国忠被处以死刑。最后,玄宗逃到成都,太子李亨在灵武即帝位,是为唐肃宗。唐肃宗任命郭子仪为兵部尚书、同中书门下平章事,做了宰相,并兼为朔方节度使。唐肃宗准备大力调整部署,反击叛军。当时肃宗周围,文武官员不满三十,军事完全依赖郭子仪。先是叛将阿史那从礼率众数万,进攻朔方,郭子仪主动进攻,双方大战于榆林境内,郭子仪大败叛军,歼敌三万,俘虏一万,保卫了灵武。接着,郭子仪挥师南下。当时两京均在叛军手中,唐军要取两京,必须先得河东。于是郭子仪先派心腹潜入河东为内应,然后又率大军过黄河,河东一下为之收复。
唐肃宗急于收复两京,于至德二年四月,任命郭子仪为司空、天下兵马副元帅,攻克两京的重任落到了他的身上。郭子仪率军进至凤翔,及后再由凤翔向长安推进。在长安西,郭子仪与十多万叛军展开激战,歼敌六万余,长安叛军首领张通儒弃城东逃。被叛军占领一年多的都城长安遂为唐军收复。官军入城,市民夹道欢呼。休整三天后,郭子仪率军继续东进。十月,安庆绪遣兵十万至陕州,经过激战,叛军大溃,安庆绪闻主力溃败,渡河退保相州,郭子仪不战而攻克洛阳。继而河南、河东、河西之乱皆平。十一月,郭子仪自洛阳入朝,肃宗遣仪仗队迎于坝上,他感激地说:“我的家国,由卿再造。”入朝后,唐肃宗即加封郭子仪为代国公、司徒。
唐肃宗乾元元年(758),郭子仪拜为中书令。九月,朝廷令郭子仪等七节度使及平卢兵马使董秦为主攻部队,李光弼等两节度使为配合,讨伐安庆绪。肃宗为了协调两军的关系,又任命宦官鱼朝恩为观军容宣慰使,负责节度诸军,实际上成了部队的最高统帅。十月,郭子仪率兵过黄河,围卫州。安庆绪率兵七万倾巢出动,分三路救卫州。郭子仪把三千弓箭手埋伏于营垣之中,自己假装失败,叛军不知是计,追到营垣,伏兵全部起来射叛军,箭如雨点,安庆绪大败而退,郭子仪乘胜率部追击,擒杀安庆绪弟弟安庆和。此次战争,叛军被斩首三万,安庆绪遭到惨重地打击,走投无路,只得退走邺(yè)城,向史思明救援。于是史思明从范阳发兵十三万,南下攻占魏州,成为与安庆绪遥相呼应的犄(jī)角之势。乾元二年(759)二月,史思明率军,抵达邺城,他们假扮成唐军,抢掠唐军运粮船只,唐军粮缺军心不稳,加上鱼朝恩又从中掣肘,唐军被史思明击败。这样一来,各节度使只得相继退兵,郭子仪也被迫退保洛阳。史思明进入邺城,叛军发生内讧(hòng),史思明杀了安庆绪,让儿子史朝义留守邺城,自己返回范阳,当了大燕皇帝。
不久,唐代宗发动对安史之乱最后一个头目史朝义的进攻,任命雍王李适为天下兵马大元帅,郭子仪为副元帅。这次战争可惜由于程元振、鱼朝恩的反对,郭子仪没有随行,仍在京城闲居。
宝应二年(763),历时七年之久的安史之乱被平定。