A source told ESPNdeportes.com's Enrique Rojas the two sides agreed on a four-year, $57 million deal that also includes a $1 million signing bonus.
With the Baltimore Orioles last season, the 34-year-old Cruz led the majors with 40 home runs and finished third in the American League with 108 RBIs.
He signed a one-year, $8 million free-agent deal with the Orioles on Feb. 24. He was suspended for 50 games on Aug. 5, 2013, for his involvement with Biogenesis.
The three-time All-Star holds MLB records for home runs (six) and RBIs (13) in a postseason series (2011 ALCS).
The Orioles made a one-year qualifying offer of $15.3 million to Cruz for 2015, which he rejected, ensuring them draft-pick compensation if he signs with another team.
Cruz brings significant thump to a Seattle offense that finished tied for 11th in the American League with 634 runs scored and ranked last among the 15 AL clubs with a .676 OPS in 2014. The Mariners had reportedly been involved in trade discussions for Matt Kemp, Justin Upton and Yoenis Cespedes, among others, in their efforts to acquire a right-handed power bat before settling on Cruz.
Mariners utility infielder Willie Bloomquist expressed his excitement for the move on Twitter.
I would venture to say that Nelson Cruz helps fill our need for some RH thump in our lineup!
— Willie Bloomquist (@williebloom) December 1, 2014
The Mariners pursued Cruz in free agency last winter before he signed with Baltimore, according to sources. Robinson Cano, who signed a 10-year, $240 million contract with Seattle a year ago, openly lobbied for the team to sign Cruz during his introductory spring training news conference in Arizona in February.
Cruz marks the Mariners' second major signing of the offseason. Seattle and third baseman Kyle Seager agreed to a seven-year, $100 million deal that includes an option for an eighth year last Monday, a league source confirmed to ESPN.com.
ESPN.com's Jerry Crasnick contributed to this report.