No matter what uniform the right-hander is wearing, the Angels can't seem to hit him much.
Cahill pitched three-hit ball into the eighth inning, Aaron Hill hit a three-run homer and the Diamondbacks slowed Los Angeles' roll through June with a 5-0 victory Friday night.
Cahill (5-5) largely overwhelmed the Angels in his third straight victory following a five-start winless streak. He struck out eight while retiring the first two batters in each of the first seven innings. Two relievers finished up the Angels' first shutout loss in a month.
"I was throwing all four pitches to righties and lefties," said Cahill, who's from Oceanside, Calif., just down the coast. "Usually when I feel like that, which is rarely, it's a good thing."
Cahill carved up the Angels' lineup from the opening pitch, allowing just two baserunners over the first four innings before escaping a two-on jam in the fifth on Mike Trout's weak grounder. Cahill has never allowed more than three earned runs in 10 career starts against the Angels, and his career ERA against Los Angeles dropped to 2.09.
"He's just been rolling, one start after another," Arizona manager Kirk Gibson said. "When he's got all of his pitches, he's doing a pretty good job managing the game."
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.
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 past 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).
"They know how I like to pitch, and I know what they like to do," Haren said. "Of course I wanted to do well against them, but they got to me today."
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.
"I felt great, no excuses," Haren said. "I've just really got to minimize my mistakes."
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 past month, but he connected for a no-doubt shot to left.
Hill didn't disagree with the Angels' strategy against him.
"It's nice when it works out, but you're playing right on right, and Miggy had some better swings than me," he said.
Lyle Overbay and Roberts followed with consecutive doubles, pushing Arizona's lead to 5-0. Overbay left the game in the seventh inning when his knee tightened up, but the veteran said it was "already better now" in the clubhouse.
Albert Pujols' eight-game hitting streak ended with an 0-for-4 performance. The slugger had 15 hits during the streak.
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. ... 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.