John Barrowman as Captain Jack Harkness