Ioan Gruffudd est né le 6 octobre 1973 au Pays de Galles. Il est l'aîné de trois enfants et a été élevé par ses parents, tous deux professeurs de gallois. Il manifeste dans un premier temps plus d'intérêt pour la musique que la comédie. C'est pourtant en tant qu'acteur que sa carrière va démarrer en décrochant son premier rôle à 14 ans dans une série galloise.
À 18 ans, il entre à la Royal Academy of Dramatic Art de Londres. Il joue son premier rôle au cinéma en interprétant un officier dans
Titanic de James Cameron.
Il rencontre sa compagne actuelle Alice Evans sur le tournage de Les 102 Dalmatiens, la suite de la comédie
Les 101 Dalmatiens de Disney.
Entre 1998 et 2003, il tient le rôle du personnage éponyme dans les huit épisodes de la série télévisée Hornblower, librement inspirée des romans de C. S. Forester. En 1999, il reçoit un Fipa d'or pour sa prestation dans la série.
En 1999, il incarne le lieutenant Feeley dans le téléfilm Warriors, l'impossible mission de Peter Kominsky, produit par la BBC. Ce téléfilm, diffusé en France en 2000, a obtenu plusieurs récompenses ; il traite de la passivité et de l'impuissance des forces de l'ONU pendant la guerre de Bosnie.
L'acteur figure dans le clip de Westlife "Uptown girl".
Ioan Gruffudd obtient son premier « gros rôle » en 2003 dans Le Roi Arthur de Antoine Fuqua où il interprète le chevalier Lancelot. L'année suivante, en 2004, il fait partie du casting de la série judiciaire et de science-fiction Century City où il incarne le jeune avocat Lukas Gold. En 2005, il obtient le rôle de Mr Fantastique dans l'adaptation du comic book Les Quatre Fantastiques ainsi que sa suite.
Il était fortement pressenti pour succéder à Pierce Brosnan dans le rôle de l'agent secret James Bond même si on lui a finalement « préféré » Daniel Craig.
Il s'est marié le 14 septembre 2007 avec sa compagne de longue date, Alice Evans. En septembre 2009, ils deviennent parents d'une petite fille, prénommée Ella Betsi Evans Gruffudd, née le 6 septembre.