郭衍字彦文,自称是太原介休人。
父亲郭崇,以舍人身份随魏武帝入关,其后官至侍中。
郭衍小时就很骁勇,善于骑马射箭。
北周陈王宇文纯引之为左右,累功升至大都督。
当时北齐未平,郭衍奉诏到天水募集人马,以镇守东边,得以迁徙一千多家,住在陕城。
拜授使持节、车骑大将军、仪同三司。
每有贼人到,他就率领人马抵抗,一年中几次告捷,颇为北齐人所惧怕。
陈王宇文纯更加亲近他。
建德中(572~577),北周武帝出京巡幸云一陽一,郭衍在行在所拜谒皇上。
当时正议论讨伐北齐,郭衍请求当前锋。
攻打河一陰一城,授他仪同大将军。
周武帝包围晋州,担心北齐兵来援,令郭衍随陈王宇文纯守千里径。
他又随周武帝在晋州与齐后主大战,追击齐军到高壁,打败齐军。
又随皇上平定并州,因功加授开府,封为武强县公,食邑一千二百户,赐姓叱罗氏。
宣政元年(578),任右中军熊渠中大夫。
尉迟迥作乱时,郭衍随韦孝宽到武陟作战,进而在相州作战。
此前,尉迟迥派弟弟之子尉迟勤为青州总管,率青州、齐州的部队来帮助尉迟迥。
尉迟迥失败后,尉迟勤与尉迟迥的儿子尉迟..、尉迟..等人,想东奔青州。
郭衍率一精一兵一千追击并打破敌军,在阵前活捉尉迟..。
尉迟勤于是逃走,而尉迟..也逃跑了。
郭衍到济州,占据其城,又在济北攻击贼人的余一党一,几战而破之,将贼首抓送京师。
朝廷越级提拔他当上柱国,封他为武山郡公,赏他布帛七千段。
他又密劝隋高祖杀北周诸王,早点让北周禅让,因此大被亲近。
开皇元年(581),皇上让郭衍恢复郭姓。
突厥进犯边塞,以郭衍为行军总管,领兵驻扎在平凉。
几年之中,突厥人都不敢进犯。
调他当开漕渠大监。
他率领水工,凿渠引渭水,经大兴城北,东到潼关,漕运四百多里,关内依赖它,把它叫作“富民渠”。
开皇五年(585),授他瀛州刺史。
遇上秋日发水,所属各县多遭水淹,老百姓都爬上高树,依托大坟。
郭衍亲自准备船筏,并备粮食,拯救百姓,百姓多被救起。
郭衍先开官仓赈灾,以后才上奏朝廷。
皇上非常赞赏,选调他当朔州总管。
朔州辖有恒安镇,北接蕃境,常要转运东西去。
郭衍于是选些肥沃的地方,开始屯田,一年富余一万多石粮食,百姓免去了转运之苦。
他又修筑桑乾镇,都符合皇上旨意。
开皇十年(590),他随晋王杨广出镇扬州。
遇上江南造反,命郭衍任总管,率一精一兵万人先住京口。
在贵洲南,与反贼交战,打败反贼,活捉贼帅,得了很多船只粮食,以补充部队。
他于是又讨伐东一陽一、永嘉、宣城、黟、歙等洞,都削平了他们。
授他为蒋州刺史。
郭衍对下很骄横,对上讨好谄媚。
晋王杨广很喜欢亲近他,饮宴、赏赐都很多。
升任洪州总管。
晋王有夺取太子之位的计谋,把郭衍当心腹,派宇文述告诉他这一计谋。
郭衍大喜,说:“若所谋之事成,自可为皇太子。
如不成,也要占据淮海,恢复梁国、陈国的旧地。
那时我也是副君家里的酒客,谁又奈得我何?”晋王因此召来郭衍,偷偷地一起商议。
又怕别人怀疑他们无故来往,就假托说,郭衍的妻子得了瘿病,萧王妃有办法治疗。
把这些报告高祖,高祖听任郭衍和他的妻子去江都,这么来来往往,无所节制。
郭衍又谎称桂州的俚人造反,晋王于是奏请朝廷让郭衍发兵讨“敌”,因此大造武器军帐,偷偷地养了很多士卒。
晋王入京当太子后,调他当了左监门率,转任左宗卫率。
高祖在仁寿宫将死,太子杨广与杨素篡改遗诏,让郭衍、宇文述率领东宫卫兵,靠近上台站岗,门禁全由他们掌握。
高祖去世后,汉王造反,而京城空虚,杨广让郭衍飞速回去,领兵防守。
大业元年(605),授郭衍左武卫大将军。
炀帝巡幸江都,令郭衍统领左军,改授他光禄大夫。
他又随炀帝征讨吐谷浑,出金山道,招纳降民二万多户。
郭衍能揣摸炀帝的意图,阿谀奉承,顺从旨意。
炀帝常对人说:“只有郭衍,心与我同。”他又曾劝炀帝自己行乐,五天一上朝,不要像高祖那样白白地劳累。
炀帝听了他的话,越发夸他孝顺。
当初,新的政令推行,郭衍的爵禄按通例被废除。
大业六年(610),因他得到一宠一幸,而被封为真定侯。
七年,随炀帝到江都,死了。
炀帝追赠他左卫大将军,赐予很多,谥号叫“襄”。
长子郭臻,任武牙郎将。
次子郭嗣本,任孝昌县令。