ARLINGTON, Texas -- Since returning from a stint on the disabled list early in the season, Kole Calhoun has been as consistent as any member of the Los Angeles Angels' lineup.

He was the guy again on Friday night.

The right fielder went 3-for-4, including a three-run homer for the Angels, who held off a late Texas rally for a 5-4 victory over the Rangers.

Calhoun's 13th home run of the season broke a 1-1 tie in the fifth inning and third baseman David Freese scored the winning run in the seventh on a fielder's choice to make a winner out of right-handed pitcher Garrett Richards (13-4).

Richards struck out seven while giving up two runs and walking none in 7 1/3 innings.

Right-hander Huston Street posted his 31st save -- and eighth since joining the Angels by trade last month -- by pitching a scoreless ninth inning to end the hopes of the Rangers, who cut into a four-run deficit by scoring three in the eighth.

"I don't know if there are too many leadoff men who have been as dynamic as Kole has been," Angels manager Mike Scioscia said. "He's able to drive the ball, get on base and score runs. He's doing his part."

Calhoun, who also had a single and double, is hitting .327 in the last 57 games since opening the season at .221 while dealing with a right ankle sprain that caused him to miss 31 games. He's hitting .448 during a six-game hitting streak and has multiple hits in five of his last six games.

Center fielder Mike Trout had a sacrifice fly for Los Angeles (71-49), which moved to within one game of Oakland in the American League West. Freese extended his hitting streak to 11 games with two hits and two runs scored.

Angels catcher Chris Iannetta went 3-for-4.

Texas right-hander Nick Martinez (2-9) took the loss, giving up four runs, six hits and walk in six innings. He struck out six, including Los Angeles left fielder Josh Hamilton three times.

Hamilton, who went 1-for-5, struck out a fourth time, with the bases loaded in the ninth.

"I think I made good pitches to most of the hitters except for Calhoun," Martinez said. "I attacked the heart of the lineup the right way and limited the damage.

"Calhoun did all the damage tonight."

Calhoun's one run scored, his 57th in 68 games batting leadoff, a total that is fourth in the AL among leadoff hitters.

Third baseman Adrian Beltre went 4-for-4 with an RBI single in the first inning and another in the Rangers' three-run eighth.

Texas (47-75) has dropped nine of its last 10 games against the Angels. Los Angeles has won eight straight in Texas, including a four-game sweep July 10-13.

Richards is 4-0 with a 2.06 ERA and improved to 8-2 with a league-leading 1.94 ERA in 14 road starts in 2014.

"He's throwing the ball really well," Scioscia said. "There's probably one outing all year that he struggled."

The Rangers "can still swing the bats. You saw how they can get back into a game."

Right-hander Kevin Jepsen relieved Richards with one out in the eighth and Texas designated hitter Shin-Soo Choo on first.

Texas followed Choo's base hit with three more, including run-scoring base hits from first baseman Mike Carp and Beltre. Right fielder Alex Rios accounted for Texas' fourth run with a fielder's choice that scored Carp.

Right-handed reliever Joe Smith induced a 6-4 fielder's choice to get Los Angeles out of the inning.

"It just goes to show you that this team has all the fight in the world," Martinez said. "A lot of these guys have the will to win and you have to take your hats off to those guys."

By retiring the side in order in the bottom of the ninth inning, Street has 11 scoreless appearances since joining Los Angeles in a trade from the Padres on July 18. For the season, he has not allowed a run in 41 of 44 appearances.