Haren pitched three-hit ball into the eighth, and Matt Kemp homered in the Dodgers' 2-1 victory over the Angels on Wednesday night.
Erick Aybar singled and scored in the eighth for the Angels, who missed a chance to move within one game of major league-leading Oakland in the AL West.
Hank Conger's one-out single in the sixth was the Angels' first hit against Haren, the former Angels right-hander.
''With a guy like him, you kind of disregard his past starts,'' said Conger, who caught Haren several times when they were teammates. ''Because any day he could step on the mound and do what he did tonight. He's been an elite pitcher for a long time.''
Haren (9-9) retired the Angels' first 16 batters in his best start since June for the NL leaders, who improved the majors' best road record to 35-23 by beating the majors' best home team.
''I tried almost everything, and it finally started working a little bit,'' Haren said.
He had lost his last five starts with a 10.03 ERA, leaving him despondent after games, but he was dominant at the stadium where he played from 2010-12.
Haren's bullpen also helped him out - particularly his closer.
Calhoun singled and stole second leading off the ninth, but Kenley Jansen struck out Trout, got Pujols on a fly to center, and struck out Hamilton to wrap up his 32nd save.
''Jansen made good pitches when he needed to against three of our best hitters,'' Angels manager Mike Scioscia said. ''We didn't do nearly what we needed to do to support Matty Shoemaker. I thought he gave us a good chance to win.''
Shoemaker (9-4) yielded six hits and struck out five over six solid innings for the Angels.
Andre Ethier had an RBI double in the second inning as the Freeway Series moved down the I-5 to Anaheim after the clubs split the first two games in Chavez Ravine.
Kemp hit his sixth homer in nine games in the second inning, a 400-foot shot to left. Ethier followed with a run-scoring double in only the high-priced outfielder's second start in 13 games.
OUT AT THIRD:
Trout, Pujols and Hamilton were a combined 0 for 12. Trout, who turns 23 on Thursday, had his 20-game interleague hitting streak snapped.
Dodgers: Utility infielder Chone Figgins was designated for assignment after his minor league injury rehab assignment ended.
Angels: Freese didn't start, ostensibly to rest a sore tendon in his left knee, but eventually replaced light-hitting John McDonald.
Dodgers: Hyun-Jin Ryu (12-5, 3.39 ERA) goes after his fourth win in five starts. He threw a shutout against the Angels last season.
Angels: C.J. Wilson (8-7, 4.74 ERA) attempts to get his season back on track after getting rocked last week in his return from the disabled list.