王衍字夷甫,神态表情明净秀美,风度姿态安详文雅。童年时曾拜访山涛,山涛感叹了很久,王衍离开后,山涛目送他说:“什么老妇人,生了这样的孩子!然而耽误天下百姓的,未必不是这个人。”王衍十四岁,当时在京城,拜访仆射羊祜,陈述事件情状,言辞十分清楚漂亮。羊祜名望德行尊贵显赫,而王衍年纪虽小却毫无屈从人下的神色,众人都认为他与众不同。杨骏想把女儿嫁给他,王衍以和他结亲为耻,便装疯使自己躲过这桩婚事。武帝听说他的名声,问王戎说:“王衍在当世谁与他相当?”王戎说:“当世没有看到与他相当的人,应该从古人中寻求这样的人。
王衍既有高才美貌,又明智颖悟如神,常常自比子贡。女儿是愍怀太子的妃子,太子被贾后诬陷,王衍害怕惹来灾祸,自己上表请求离婚。贾后被废黜后,官吏弹劾王衍,说:“太子被诬陷获罪,王衍不能以死固守善道,立即要求离婚。得到太子亲手写的信,又隐藏不拿出来。意在苟且避祸,无忠直的节操。应该加以重罚,来激励人臣坚守节操。可以对他终身禁锢。”晋帝听从了他的意见。
王衍虽然身居宰辅的重要职位,却不把治理国家放在心上,只考虑保全自身的办法。劝说东海王司马越说:“中原已经乱了,应当依赖地方长官,应该选拔文武兼备的人来担任地方长官。”便任命弟弟王澄为荆州刺史,族弟王敦为青州刺史。于是对王澄、王敦说:“荆州有江汉的险要地势,青州有背靠大海的险峻地势,你们二人在外,而我留在这里,足以算作狡兔三窟了。”有识之士鄙视王衍。
司马越讨伐苟晞,王衍以太尉的身份担任太傅军司。至司马越去世,众人共同推举他为元帅。王衍因为贼寇纷起,恐惧不敢担当。推辞说:“我年少时就没有做官的欲望,随着选补官吏,于是到了今天的职位。今天这样重要的职位,怎么能用不具备才能的人担任呢?”不久全军被石勒打败,石勒召呼王公与王衍见面,向王衍询问西晋溃败的原因。王衍向他陈述西晋遭遇灾祸和失败的缘由,并说计策不是自己出的。石勒很喜欢王衍,与他谈了很长时间。王衍说自己从年少时就不参与政事,希望自己能免于处置,还趁机劝石勒称帝。石勒大怒说:“你闻名天下,位高任重,年轻时就入朝为官,直到满头白发,怎么能说不参与政事呢!使国家破亡风俗败坏,正是你的罪过。”石勒让左右之人将王衍扶出帐外。石勒对自己的同伙孔苌说:“我走过天下的地方也够多了,却未曾见过这样的人,应该不应该让他活命呢?”孔苌说:“他是晋朝位居三公的高官,肯定不会替我们尽力,又有什么值得珍惜的呢?”石勒说:“关键不能用刀杀他。”让人在夜里推倒墙杀埋了他。王衍临死前,回头对人说:“唉!我们这些人虽然比不上古人,假使不推崇浮华清谈,合力匡正挽救天下,还可以不至于到今天这步天地。”死时五十六岁。