Eric Roberts est l'aîné d'une famille de trois enfants, dont l'une des soeurs cadettes n'est autre que Julia Roberts. Il commence sa carrière d'acteur très jeune, dans une troupe de théâtre locale. Après des études de théâtre, il joue dans quelques petits films, puis c'est la reconnaissance grâce à ses rôles dans King of the gypsies (1978) et Star 80 (1984), pour lesquels il est nominé aux Golden Globe Awards. L'année suivante, le succès continue puisqu'en plus d'être une nouvelle fois nominé aux Golden Globe Awards, il est cette fois aussi nominé aux Oscars pour son rôle de Buck dans Runaway Train (1985) où il s'illustre aux côtés de Jon Voight. En 1986 il partage l'affiche de Nobody's fool avec Rosanna Arquette.
Mais les succès ne suivent pas toujours : à la fin des années 80 il tourne plusieurs films et téléfilms sans grand retentissement critique ou populaire, dans lesquels on l'accuse souvent de surjouer. Il semble à cette période privilégier la quantité à la qualité et il connaît simultanément de sérieux problème de drogue, mais heureusement cela ne met pas un terme à sa carrière puisqu'on revoit vite son nom à l'affiche auprès de ceux des plus grands, dans Sang chaud pour meurtre de sang-froid (1991), avec Richard Gere et Kim Basinger et dans L'Expert (1994) avec Sharon Stone, Sylvester Stallone et James Woods. Au Festival du Film de Sundance, la critique salue ses performances lors de la projection de It's my Party (1996) où il campe un malade mourant du SIDA, et de celle de De sang froid (1996), adaptation du roman de Truman Capote In Cold Blood. On le voit ensuite incarner son propre personnage dans le Disjoncté (1996) de Ben Stiller. En 2000, il est nommé Meilleur Acteur par le Festival du Film Indépendant de New York, pour son rôle dans La cucaracha.
Par la suite, sa sériographie sera plus garnie que son activité pour le cinéma, on le voit surtout sur petit écran dans de petits rôles pour Oz, Les Experts : Miami, ou Heroes où il obtient un rôle secondaire mais récurrent pour plusieurs épisodes, jusqu'à la mort de son personnage. En 2008, on le retrouve dans le rôle de Salvatore Maroni, un des plus grands ennemis de Batman dans le blockbuster The Dark Knight, Le Chevalier Noir.