Updated

Trevor Cahill pitched three-hit ball into the eighth inning, Aaron Hill hit a three-run homer, and the Arizona Diamondbacks slowed the Los Angeles Angels' roll through June with a 5-0 victory Friday night.

Jason Kubel had three hits and drove in an early run for the Diamondbacks, who earned their ninth win in 12 games and got back to .500 (32-32) for just the second time since May 3. Ryan Roberts had an RBI double after Hill's homer in the Diamondbacks' four-run sixth.

Cahill (5-5) largely overwhelmed the Angels in his third straight victory following a five-start winless streak. The right-hander struck out eight while retiring the first two batters in each of the first seven innings.

In their first trip to Angel Stadium since 2001, the Diamondbacks also beat Dan Haren, a two-time All-Star for Arizona facing his former teammates for the first time.

Haren (4-7) allowed eight hits and five runs during his sixth loss in his last nine starts as Los Angeles opened a nine-game homestand with a loss for the majors' best interleague team since the start of the 2007 season (68-32).

Los Angeles was shut out for the first time since May 14. The Angels, who took two of three from the Dodgers this week, had the majors' best record over the past three weeks, winning 16 of 21 to move a season-best four games over .500.

Haren spent parts of three seasons with the Diamondbacks, winning 37 games and making two NL All-Star teams before interim general manager Jerry Dipoto traded him back to his native Southern California in July 2010. Dipoto now runs the Angels, and Haren hadn't faced Arizona since 2004.

Haren struck out five and pitched into the seventh inning, but gave up a run on his first four pitches. After Chris Young cracked a leadoff ground-rule double into the short porch in left, Kubel — who won the NL's most recent Co-Player of the Week award and then homered Thursday night in Texas — followed with a run-scoring single.

Cahill carved up the Angels' lineup from the opening pitch, allowing just two baserunners in the first four innings before escaping a two-on jam in the fifth on Mike Trout's weak grounder.

Arizona led 1-0 in the sixth when the Angels intentionally walked cleanup hitter Miguel Montero to pitch to Hill with two on and two outs. Hill had hit just one homer in the last month, but he connected for a no-doubt shot to left.

Lyle Overbay and Roberts followed with consecutive doubles, pushing Arizona's lead to 5-0.

Albert Pujols' eight-game hitting streak ended with an 0-for-4 performance. The slugger had 15 hits during the streak.

NOTES: Angels ace Jered Weaver moved a step closer to returning from the DL by throwing a simulated game, going through his normal routine and throwing 60 pitches with no problems. Weaver will throw in the bullpen Sunday before the Angels decide whether he will return next week from his DL stint with lower back pain. ... Los Angeles was shut out eight times in its first 36 games, but hadn't been blanked since. ... LHP Joe Saunders, traded from Los Angeles to Arizona in the deal for Haren two years ago, faces his former team for the first time Saturday night. Struggling RHP Ervin Santana pitches for the Angels. ... Veteran manager Tony La Russa attended the game. La Russa and Pujols both left the St. Louis Cardinals after last season's World Series championship run.