McCarthy (1-0) allowed two runs and four hits in his third start of the season. He struck out four without a walk in a 104-pitch outing.
The Rangers planned on having McCarthy as a mainstay of their rotation, but he went on the 60-day disabled list on March 30 with right forearm inflammation after pitching an inning in a spring training game. He didn't begin throwing in the bullpen until June 21.
"It's important," said McCarthy, whose last victory was on July 31, 2007 at Cleveland. "But I don't put any more importance on this September than other Septembers. I don't care what the situation is, I just want to pitch well."
"He's a big part of our team," Rangers catcher Gerald Laird said. "We gave up a good prospect for him and I know he wants to produce. It's good to see him pitching so well."
Rangers manager Ron Washington said the next step for McCarthy is to be more efficient.
"He competes hard," Washington said. "Once he controls his pitch count, you'll see him go deeper in games."
Frank Francisco struck out the side in the ninth for his third save in nine chances. Texas had lost 10 of its previous 12 at home and four of five overall.
Hamilton, who increased his major league-leading RBI total to 121, Laird and Milton Bradley all had three hits for Texas, while Hank Blalock had two RBIs to help the Rangers end the Mariners' season-best four-game winning streak.
Yuniesky Betancourt homered for the Mariners.
Seattle starter Ryan Feierabend (0-2) gave up five runs and 11 hits over 5 2/3 innings.
"Ryan threw the ball pretty good," Mariners manager Jim Riggleman said. "It's a tough lineup and he battled and did a good job. He made a lot of good pitches and kept us in the game. He probably doesn't feel it was his best game but he gave his team a chance to win."
Texas grabbed the lead in the first on Hamilton's two-run single after Seattle got a run in the top of the inning on Raul Ibanez's sacrifice fly.
"[Hamilton] is an RBI machine who continues to do what he's done all year no matter what you throw at him," Riggleman said. "But our guys came back and battled and gave us the opportunity to make something happen there in the ninth."
The Rangers went in front 3-1 in the second when Nelson Cruz tripled and scored on Laird's single. Blalock's third-inning RBI double gave Texas a 4-1 lead.
McCarthy retired 10 straight hitters until Betancourt's two-out homer in the fifth pulled Seattle within 4-2.
Blalock's RBI single in the sixth made it 5-2.
Seattle rallied with a two-run eighth on Ibanez's run-scoring single and Jose Lopez's RBI double to get within 6-4.
The Mariners called up seven players from Triple-A Tacoma in a two-day span, but Riggleman isn't a fan of expanded rosters on Sept. 1. "You play the game one way for five months, and then the last month of the season the rules are changed," Riggleman said. "I've never liked it. Some teams are playing with 28, some with 38. No other sport does it that way." ... Seattle C Kenji Johjima was out of the starting lineup after getting spiked on the hand during a slide into first base during Monday night's game. He's day-to-day. ... The Rangers extended their minor-league agreement with Class-A Spokane. ... The crowd of 14,521 was the smallest of the season at Texas. The previous low was 14,563 on May 1 against Kansas City.