Robbie Ray, who is competing for the fifth spot in the D-backs rotation, turned in his second solid outing of the spring. The left-hander allowed two hits over three scoreless innings and has not allowed a run in five spring innings.
"I'm getting better every time out," Ray said. "I'm just fine-tuning things. The main thing today was just staying around the zone."
Richards, who is expected to be the Angels' Opening Day starter, then uncorked a wild pitch to allow Drury to score.
Richards allowed the three runs on four hits in his 2 2/3 innings but reached 100 mph on the radar gun twice and touched 99 mph four times.
"Really, everything felt good," Richards said. "Delivery had good rhythm and tempo and timing. I think I'm on track."
Socrates Brito -- who had three hits for Arizona -- gave the D-backs a 3-0 lead with a third-inning double.
The Angels got on the board in the fourth when Jefry Marte doubled, moved to third on a wild pitch and scored on Perez's groundout to third. Afterward, Angels manager Mike Scioscia talked about being impressed with his team's "situational game."
"We put the ball in play, we ran the bases aggressively and stole some bases, got some bunts down," Scioscia said. "All those things we need to do, we saw some of them tonight."
Up next for the Angels:Jered Weaver makes his second Cactus League start on Wednesday, opposite old friend Scott Kazmir, when the Angels host the Dodgers at Tempe Diablo Stadium. Game time is set for 12:10 p.m. PT (watch on MLB.TV). Weaver pitched two scoreless innings against the Cubs on Friday.
Up next for the D-backs:Zack Greinke will make his second start of the spring for the D-backs on Wednesday when they play host to the Padres at Salt River Fields at 1:10 p.m. MST (watch on MLB.TV or listen to an exclusive webcast). Greinke, who was signed to a $206.5 million deal in December, will be followed to the mound by Tyler Wagner. Wagner is competing for the No. 5 spot in the Arizona rotation.
Steve Gilbert is a reporter for MLB.com. Follow him on Twitter @SteveGilbertMLB. This story was not subject to the approval of Major League Baseball or its clubs.