1980s–1990s: First films
Mortensen's first film role was in the Woody Allen film The Purple Rose of Cairo (1985), but his scenes were deleted from the final cut. He was one of the two finalists to play the title role of Tarzan in the adventure film Greystoke: The Legend of Tarzan, Lord of the Apes (1984), though the role eventually went to Christopher Lambert.
His first onscreen appearance was playing an Amish farmer in Peter Weir's Witness. He was cast because the director thought he had the right face for the part. Although he was simultaneously cast as a soldier in Shakespeare in the Park's production of Henry V, he chose to work on Witness instead, citing a desire to try something new. Mortensen credited that decision and the positive experience on the film as the start of his film career. Also in 1985, he was cast in the role of Bragg on the TV soap opera Search for Tomorrow, and played Tybalt opposite Michael Cerveris in a stage production of Romeo and Juliet at Chicago's Goodman Theatre.
Mortensen's 1987 performance in Bent at the Coast Playhouse, Los Angeles, won him a Dramalogue Critics' Award. The play, which revolves around homosexual prisoners in a concentration camp in Nazi Germany, was known for the leading performance by Ian McKellen, with whom Mortensen later costarred in the film trilogy The Lord of the Rings. The same year, Mortensen had a supporting role as Jerome Stample in the black comedy Salvation! , and played a co-lead role as a convict in the horror film Prison. He also guest starred as a police detective on the hit TV series Miami Vice. In 1988, Mortensen played a minor part as Green, the abusive husband of Jewel (Molly Ringwald), in Fresh Horses. The following year, Mortensen appeared in a minor role as Hans in Tripwire.
Mortensen made three film appearances in 1990: Edward "Tex" Sawyer, a member of a cannibalistic family in the horror film sequel Leatherface: The Texas Chainsaw Massacre III, John W. Poe in Young Guns II, and Cameron Dove, a military veteran suffering from radiation poisoning in The Reflecting Skin. The Reflecting Skin was Mortensen's first film to premiere at the Cannes Film Festival. The following year, Mortensen starred as Frank Roberts in Sean Penn's directorial debut The Indian Runner. Sandy Dennis, who played Frank Roberts's mother in the film and was a personal friend of Mortensen, was dying of ovarian cancer during filming. Mortensen described the filming experience as having an "undercurrent of loss," and wrote the poem "For Sandy Dennis" in her honor.
In 1992, Mortensen starred in Ruby Cairo alongside Liam Neeson and Andie MacDowell. Although Ruby Cairo was Mortensen's highest-budget film at this point in his career, it was a commercial failure, bringing in only 608,000 on its 24 million dollar budget. The next year, the film was recut and given the title Deception. Several scenes were reshot for Deception, including a sex scene between Mortensen and MacDowell, which was removed and replaced with a less intimate dialogue on a balcony.
By the mid-1990s, Mortensen was consistently making several film appearances a year. During this time, Mortensen was frequently cast in crime dramas such as Lalin Miasso in Carlito's Way, Carl Frazer in The Young Americans, Nick Davis in American Yakuza, and Guy Foucard in Albino Alligator.
Other films from that time include Jane Campion's The Portrait of a Lady, where he played Caspar Goodwood, a love interest of the film's protagonist, Isabel Archer (Nicole Kidman). He also acted in Crimson Tide, Daylight, A Walk on the Moon, The Passion of Darkly Noon, 28 Days, and The Prophecy, with Christopher Walken.
With a budget of $50 million, G.I Jane (1997) was Mortensen's biggest budget film appearance prior to his role in Lord of the Rings. Although the film earned his co-star, Demi Moore, a Golden Raspberry Award for her role, Mortensen's performance as Command Master Chief John James 'Jack' Urgayle was favorably received.
In 1998, Mortensen appeared in remakes of two Alfred Hitchcock movies: Psycho and A Perfect Murder (which was a remake of Dial M for Murder).