科举及第后,任侍御史,转兵部员外郎等官。“安史之乱”时,任太原少尹,协助李光弼守太原,颇有功绩和谋略,为舆论所推重,升任刑部侍郎,曾两次出任宰相。
历任河南副元帅,加侍中、使持节、都统河南、淮西、山南东道诸节度行营事,东都留守,河东节度使、太原尹、北都留守等军事要职,并以“才微位高”、“无益时事”、不应“无功增秩”等理由自谦,让出高位和兼职。在太原少尹任上,整肃纪律,从严治军,将恃功自居不受约束的太原旧将王无纵、张奉璋等到以军法处斩,全军将校再不敢玩忽职守。
“安史之乱”平息后,面对兄长王维成为安禄山俘虏而接受审查时,诚恳地要求免除自己的官职来为兄长赎罪,帮助王维得到从宽处理。兄弟之间的情谊,颇受世人称赞。
晚年身为宰相,面对权臣元载的专横行为,不敢进行斗争,反而事事附和。大历十二年(777年),元载获罪受诛后,贬为括州(今浙江丽水市)刺史。后,又被召归,为太子宾客、分司东都,直到去世。