Josh Hamilton drove in the winning run with a single in the ninth inning and the AL West-leading Texas Rangers rallied from a three-run deficit for a 7-6 victory over the Seattle Mariners Tuesday night. Ian Kinsler and Endy Chavez homered for the Rangers, whose division lead over second-place Los Angeles remained at 1½ games with the Angels beating the Yankees. Jeff Gray (0-1) walked Kinsler leading off the ninth. Aaron Laffey relieved and Chavez reached on a bunt single that sent Kinsler to second. Hamilton followed with a single to left, and Kinsler scored easily from second ahead of a short throw from left fielder Trayvon Robinson before being mobbed by teammates who began running onto the field immediately after Hamilton made contact. Rays 4, Royals 0: In St Petersburg, James Shields threw a six-hitter for his major league-best eighth complete games this season, Evan Longoria homered and had four RBIs, and the Tampa Bay Rays beat the Kansas City Royals. Shields (11-9) also has four shutouts this year. The right-hander is 6-2 in nine career starts against Kansas City. Longoria drove in two runs on a single during the first and hit a two-run homer in the sixth. He has driven in 12 runs over his last 12 games despite having just nine hits during the stretch. Jeff Francis (4-12) gave up four runs and five hits over seven innings for the Royals. The left-hander retired 15 in a row after allowing the first three batters to reach base in the first. White Sox 4, Orioles 3: In Baltimore, Brent Morel homered and drove in two runs, Carlos Quentin also connected, and the Chicago White Sox beat the Baltimore for their season-high fifth straight victory. Gavin Floyd (10-10) gave up three runs in 6 2-3 innings for the White Sox. The Maryland native is 3-0 with a 2.28 ERA lifetime in Baltimore. Coming off a horrid performance against the Yankees in which he surrendered 10 runs in 2 1-3 innings, Floyd improved to 4-1 in his last five starts. Athletics 4, Blue Jays 1: Josh Willingham and Kurt Suzuki homered, Rich Harden pitched seven strong innings for his first career win over Toronto, and the Oakland Athletics beat the Blue Jays. Harden (3-2) came in 0-3 with a 5.74 ERA in eight starts against the Blue Jays, including 0-2 with a 13.50 ERA in three starts north of the border. But he was in command for much of this one, allowing just five hits over seven innings. He walked two and struck out eight to win his second straight decision. Angels 6, Yankees 4: In New York, Bobby Abreu hit his second homer of the game, a two-out, two-run shot off Mariano Rivera in the ninth inning, and the Los Angeles Angels beat the New York Yankees.