PHOENIX -- Three weeks shy of his 24th birthday, Tim Lincecum already is being compared with today's best pitchers.
"He's special," San Francisco manager Bruce Bochy said. "He's one of the better pitchers in the game."
Lincecum (7-1), with a fastball that reached 98 mph on the Chase Field radar gun, allowed three runs on six hits in 7 1/3 innings. The young right-hander struck out seven and walked three while improving to 3-0 in his last four starts.
Lincecum felt his manager's comments might be a bit premature.
"It would be something to really be able to be that, but I've got a lot to work on and stuff right now," he said. "I'm hoping that it's not just now. I want to have a long career. It was just a great compliment and I appreciate it."
Lincecum has benefited from the wisdom of Molina behind and at the plate. The veteran catcher was named NL player of the week for last week after going 15-for-23 with six doubles, a home run and nine RBI.
On Tuesday, Molina picked up where he left off with a three-run homer in the third. Castillo added a 422-foot solo shot in the fourth. Both homers came off Arizona starter Dan Haren (5-4). Brian Wilson threw a perfect ninth for his 15th save, tying Houston's Jose Valverde for the NL lead.
"I don't like to think about it," Molina said of his offensive streak. "This game is pretty tough to be out there and try to think about that stuff. I try to get a very good at-bat every single time out there."
Molina's sixth homer of the season put the Giants up 3-0. Fred Lewis led off the inning with a single, then Ray Durham walked. After Randy Winn flied out, Molina hit Haren's 1-2 pitch into the left-field seats.
"It was probably knee-high, just above the knee, to a guy who is smokin' hot right now," Diamondbacks manager Bob Melvin said.
Haren said he was trying to get the pitch down after nearly striking out Molina on the previous pitch, the batter barely getting a piece of the ball.
"That's the way it goes," Haren said. "He swings and misses right there, it's a completely different game."
San Francisco made it 4-0 in the fourth when Castillo hit Haren's first pitch high above the home-run line in straightaway center. It was Castillo's fourth homer this season.
Consecutive doubles by Lewis and Durham boosted the Giants' lead to 5-0 in the fifth.
Arizona broke through with a run off Lincecum in the fifth. Jeff Salazar drew a one-out walk, took second on Haren's groundout, then scored when Chris Young singled off the glove of the second baseman Durham.
Lincecum left after giving up singles to Orlando Hudson and Conor Jackson in the eighth. Chad Tracy doubled off Tyler Walker to bring home Hudson, then Jackson scored on a wild pitch to cut the Giants' lead to 6-3.
Haren gave up five runs on nine hits in six innings. He struck out seven and walked one in losing two in a row for the first time this season.
The Diamondbacks, opening a six-game homestand, lost for the sixth time in eight games but maintained a 3½-game lead in the NL West over the second-place Los Angeles Dodgers, who lost to the Cubs in Chicago.
- Arizona's Justin Upton was 0-for-4 with three strikeouts. The 20-year-old is in an 0-for-26 slump with 17 strikeouts.
- Arizona's Chad Tracy started at 3B, one day after playing 1B in his initial game of the season following his activation from the DL.
- While Lincecum is 7-1, the rest of the Giants' pitching staff is 14-30.
- The Diamondbacks lost for only the sixth time in 26 games against NL West foes.