SAN FRANCISCO -- It didn't take Tim Hudson very long to establish himself as the ace of the San Francisco Giants' rotation.
One month into the season, the three-time All-Star is looking just as sharp and crisp as ever.
Not even a close play at first base that was eerily reminiscent to the one that resulted in a shattered right ankle last July was enough to rattle the right-hander.
"He just put on a clinic," San Francisco manager Bruce Bochy said. "He stayed down the whole game, had good movement, changed speeds and threw strike one. If you want to show young pitchers how to do it, that's how you do it."
Hudson (4-1) struck out six and didn't walk a batter for the fourth time in five starts this season. The Giants' most consistent starter in his first season with the club, Hudson has walked two batters in 46 innings.
The 38-year-old was one pitch from recording his first shutout in nearly two years before Yasmani Grandal's two-out home run in the ninth.
"It was definitely an economical night," Hudson said after throwing 89 pitches. "I was able to get down in the strike zone and stay down in the zone, work ahead in the count. Guys were making some good plays behind me. It was a fun night for us."
Cameron Maybin doubled and scored for San Diego, which has lost 10 consecutive series at AT&T Park.
Hudson allowed only one runner past second base until Grandal's home run in the ninth, and had two stretches where he retired nine consecutive batters.
The right-hander helped his cause at the plate with a single in the second and a key sacrifice bunt in the seventh that put the eventual winning run in scoring position.
He also survived a scare while covering first base to take the throw from Brandon Belt and retire Jace Peterson to end the fifth. The play brought back memories of last season when Hudson collided with Eric Young of the New York Mets and suffered a gruesome season-ending ankle injury.
"I'm not as quick as I used to be getting to first," Hudson said. "That kid was getting down the line pretty good. The old guy had to put it into overdrive to beat him."
Hudson was sharp early and needed only 19 pitches to retire the first seven batters. After giving up a one-out single to Peterson in the third, the three-time All-Star struck out San Diego pitcher Robbie Erlin and Everth Cabrera.
The only other hits the Padres managed came on a two-out double by Grandal in the fourth, a single by Jedd Gyorko in the seventh and a leadoff double by Maybin in the eighth. Maybin scored on Alexi Amarista's groundout.
"You can't let a guy like that get ahead in the count," Padres manager Bud Black said. "He'll really give you fits. Those pitches that were early count swings looked to me as though they were in good spots today. We just didn't hit them."
Hunter Pence singled, stole second and scored on Morse's two-out double off the wall in right in the first.
Hicks' fifth home run of the season leading off the second made it 2-0.
Erlin (1-4) pitched out of jams in the third and fourth but lost his fourth consecutive start. He left with two outs in the seventh, struck out five and walked one.
After Grandal's home run cut San Francisco's lead to 3-2, Romo retired pinch-hitter Chris Denorfia for his seventh save.
Pagan was given the night off to rest his sore right knee while the slumping Sandoval also rested. Sandoval went into the night batting only .177 with only six RBI.
Gyorko was reinstated from the paternity leave list before the game. To make room, San Diego optioned Tommy Medica to Triple-A El Paso. ... Padres LF Carlos Quentin, on the 15-day DL with a bone bruise in his left knee, will re-join the big league club for a workout at Petco Park before Friday's game against Arizona. The team will then determine where Quentin goes to begin a rehab assignment. ... RHP Tim Lincecum (1-1), who starts the series opener, has a 2.99 ERA in 13 career starts against the Braves. ... RHP Andrew Cashner, San Diego's starter against Arizona, has a 0.81 ERA at Petco Park this season.