王衍字夷甫,神态俊秀,风姿高雅。儿时曾到山涛家,山涛见了感叹良久,王衍离去时,山涛望着他的背影说:“哪个老妇,生出这样可爱的孩子,然而给天下百姓留下祸害的,未必不是此人。”父亲王磖,为平北将军,曾经有公事要见皇帝,让传递表奏的官列表上报,没有得到批复。王衍十四岁,当时在京师,就去拜访仆射羊祜,陈述此事的情状,言辞清晰善辩。羊祜德高名重,而王衍尚是幼年,无屈下怯弱之色,众人都觉奇异。杨骏想把女儿嫁给他,王衍以杨骏品德不好为耻辱,假装疯癫,才推脱此事。武帝听说王衍的名声,问王戎道:“王夷甫可以和当世的哪个人相比?”王戎说:“当今还没有看到能和他相比的人,应当从古人中去找。”
泰始八年(272),武帝下诏推荐有奇才可以安定边郡的人,王衍开始就喜欢谈论纵横之术,所以尚书卢钦就推荐他做辽东太守。王衍辞不就职,于是不再谈论世事,只是吟咏玄虚。曾因在宴会上惹怒了一个族人,族人举起盘子,甩在王衍脸上。王衍沉默无言,拉着王导共坐一辆车子离去。然而心中总觉不平,在车中拿出镜子照了照,对王导说:“你看我的目光却在牛背上了。”父亲死于北平,安葬甚厚,加之亲戚朋友向他借的债也都放弃不收,数年之间,家中资产用尽,便移往洛陽城西田园中居住。后为太子舍人,迁为中书郎。又出补元城令,终日清谈,也处理政务。入京为中庶子、黄门侍郎。
魏正始年间(240~249),何晏、王弼等继承发扬《老子》、《庄子》思想,提出论点认为:“天地万物皆以无为本,无这东西,可以揭开万物的规律,使人事各得其宜,它是无处不存在的。陰陽依赖它以化成万物,万物依赖它以生成有形之体,贤者依赖它以修成自己的美德,不肖者依赖它可以免除灾祸。所以无大有用于人,无爵即可以大贵了。”王衍很推崇这种理论。只有裴危页认为这种理论是错误的,写文章加以驳难讽讥,而王衍不予理睬,我行我素。王衍既有盛才,又有美貌,聪敏若神,常自比子贡。加之声名狼藉,为当世人所注目,擅长玄言,只以谈《老》、《庄》为事。常常拿着玉柄尘尾,手与玉柄同色。对《老》、《庄》中他认为不妥的义理,随口加以更改,世人号称“口中雌黄”。朝野多有趋附者,称为“一世龙门”。王衍屡次居显要官职,后进之士,莫不仰慕仿效。被推荐登朝入仕的,第一个被称道的就是王衍。矜持清高,虚浮荒诞,遂成为一代风气。王衍曾有一幼子夭折,山简前去吊唁,王衍悲痛得无法克制,山简说:“怀抱中的小孩,何必这样悲痛呢?”王衍说:“圣人会忘掉情,下等人不知道什么是情,这样看来,情都集中在我们这些人身上了。”山简很佩服这话说得好,自己也悲痛起来了。
王衍的妻子郭氏,是贾后的亲戚,倚仗贾后的权势,刚愎贪婪,聚敛财富,从无满足的时候,又好干预他人之事,王衍深为忧虑,但又无法禁止她。有个出身乡里做过幽州刺史的人叫李陽,当时是京师的大侠,郭氏平素很怕他。王衍对郭氏说:“不但我认为你这样做不对,李陽也认为你不对。”郭氏这才收敛了些。王衍憎恶郭氏贪鄙,所以从来不提钱字,郭氏故意试验他是否说钱,令婢女用钱串围绕于床前,使他下床不能走路。王衍早晨起来见床下都是钱,对婢女说:“把阿堵物拿开!”他对钱就是这样避而不言。
后来历任北军中侯、中领军、尚书令。他的女儿是愍怀太子妃,太子为贾后诬陷迫害,王衍怕灾祸及身,上表请求离婚。贾后被废之后,有司上奏弹劾王衍,奏文说:“王衍曾给司徒梁王司马肜写信,抄写报送皇太子亲手给太子妃及王衍写的信,信中陈说自己被诬陷的情状。司马肜拜读,词意恳切悲痛。王衍位为大臣,这种不义的行为应当受到指责。太子被诬陷而得罪,王衍不能为正义献身守节,马上要求离婚,接到太子的亲笔信,又隐藏起来不敢拿出。意在苟且免祸,无忠直之操。应严厉追查他的责任,以劝戒为臣之节。王衍应受禁锢终身之处分。”皇帝听从了这个意见。
王衍向来轻视赵王司马伦的为人。司马伦篡位后,王衍装疯砍死婢女,才得免祸。司马伦被杀,王衍拜为河南尹,转为尚书,又转为中书令。当时齐王司马礒有匡救国家的功劳,然而专权恣肆,公卿都向他下拜,只有王衍向他作个长揖而已。后因病辞职。成都王司马颖以王衍为中军师,多次迁升为尚书仆射,兼管吏部,后拜尚书令、司空、司徒。王衍虽身居宰辅重位,然而不把治国放在心中,所考虑的只是如何保全自己。劝东海王司马越说:“中国已经大乱,应当依赖地方各镇将领,选择那些文武兼备的人才加以任命。”于是以其弟王澄为荆州刺史,堂弟王敦为青州刺史。王衍对王澄王敦说:“荆州有长江汉水之固,青州有背海之险,你们两个在外,我留京师,这就是保证安全的三窟啊。”有见识的人都认为他这种言行是鄙劣的。
石勒、王弥侵扰京师时,皇帝以王衍为都督征讨诸军事、持节、假黄钺以抗敌。王衍使前将军曹武、左卫将军王景等击贼,打退了贼军,截获敌军辎重。迁为太尉,尚书令如故。封为武陵侯,王衍辞封不受。当时洛陽形势危急,很多人想迁都以避难,而王衍独卖掉车牛,表示不迁,以安定众人之心。
司马越讨伐苟日希时,王衍以太尉身份为太傅军司。司马越死,众人共推王衍为元帅,王衍认为贼寇锋芒正锐,害怕不能敌挡,就推辞说:“我从少年起便无作官的愿望,为朝廷文牒所迫,沉浮于官场,才弄到今天这个地步。当前抗敌之事,怎能让没有军事才能的人去担当。”不久全军被石勒击破,石勒邀王衍会面,称他为王公,并向王衍询问晋失败的原因。王衍向石勒陈说了晋发生祸败的原由,说军事计谋不出于自己。石勒很喜欢,和他谈了很长时间。王衍又说自己从小就不愿干预世事,想避免祸害,因而又劝石勒称帝。石勒大怒说:“君名冠四海,身居重位,少壮时即登朝做官,直到白首,怎能说不干预世事呢!破坏天下,正是你的罪。”使左右卫士将他扶出。石勒对近臣孔苌说:“我走遍天下,还不曾见过这种人,应当让他活否?”孔苌说:“他是晋的三公,一定不会为我们尽力,有什么值得把他看作贵重之人。”石勒说:“只是不能用刀杀他。”于是使人夜间推倒墙把他压死了。王衍将死时,望着旁边的人说:“唉!我们这些人虽不如古人,往日若不崇尚虚浮,努力匡扶天下,还不至于有今日之事发生。”死时五十六岁。
王衍俊秀有美名,倾心于玄虚高远之道,从不言利。王敦过江后常称赞王衍说:“王夷甫处在众人中,如珠玉放在瓦石间。”顾恺之作画赞,也称颂王衍如高岩青峰,耸立千仞。他就是这样为人们所推崇。