Trevor Cahill took a no-hitter into the seventh inning, helping the Arizona Diamondbacks beat the San Francisco Giants 6-2 Wednesday night in a game in which the benches cleared after a tag play at third base.

Cahill didn't give up a hit until Marco Scutaro led off the seventh with a single. He allowed another single and walked the bases loaded before being lifted for a reliever after 6 1-3 innings

Cahill (10-11) retired the first 16 batters he faced in earning his 50th career win. He allowed two runs, walked two and struck out five in the Diamondbacks second straight win over the NL West-leading Giants.

Chris Johnson doubled, tripled and drove in two runs for Arizona.

Pablo Sandoval took exception with John McDonald, who came into third base without sliding in the eighth on a force play. Diamondbacks' coach and former Giant Matt Williams stepped in immediately as both benches cleared.

Madison Bumgarner (14-10) lost his third straight start after giving up four runs on seven hits over 6 1-3 innings. He walked two and struck out five.

Aaron Hill, Miguel Montero and Paul Goldschmidt also drove in runs for Arizona, which opened its current road trip with two wins at Los Angeles.

Brandon Belt drove in two runs for the Giants, who have lost three of their last four games to the Diamondbacks.

Adam Eaton, who had two hits for the second straight night, made two nice running catches in the sixth to keep the no-hitter going. He robbed Xavier Nady on a ball he ran back on and then robbed Angel Pagan with a diving catch coming in.

Cahill lost the perfect game when he walked Brandon Crawford with one out in the sixth.

Johnson also made a superb play on a ball that was deflected by Cahill in the second, nailing Belt at first.

Montero's single in the first gave the Diamondbacks a 1-0 lead. McDonald singled home a run in the fourth.

The Diamondbacks tacked on four runs in the seventh, with Johnson's two-run single against Juan Machi the big hit. Hill doubled home a run and Goldschmidt singled home a run.

Cahill got an out after the first hit and left the game after Buster Posey's infield hit and Hunter Pence's walk. Mike Zagurski gave up Belt's two-run single.

NOTES: Giants RHP Clay Hensley (right groin strain) threw to hitters and should be available when he's eligible to come off the DL on Tuesday. ... Giants OF Jason Christian (left wrist sprain) will also be activated when he's eligible on Friday. ... Giants INF Brandon Crawford committed his first error since July 28. ... RHP Tim Lincecum (8-14, 5.21) will start for the Giants on Friday night. He is 2-1 with a 2.55 ERA against the Dodgers this season. ... Diamondbacks LHP Tyler Skaggs (1-0, 2.70) will make his second major league start Friday against the Padres. He's the second-youngest pitcher to make his first major league start in a Diamondbacks uniform. ... The Giants used 24 pitchers in the series. ... Cahill threw 67 pitches through six innings.