MIAMI -- Not even a ball to the face could stop Melky Cabrera.
Cabrera was briefly shaken up when a throw hit him on a slide into second base Sunday, but he tied a career high with four hits, including a home run, and scored all three runs for the San Francisco Giants to help Matt Cain beat the Miami Marlins 3-2.
Cabrera went 4 for 4 to hike his average to .369 and has 73 hits, most in the majors and the most by a Giants player through 48 games since Willie Mays in 1958.
"Now I'm really happy," the Dominican outfielder said through a translator. "I didn't know that I was up there in the ranks of Willie Mays, but I'm honored to be mentioned in the same sentence."
Cabrera was also Mays-like in stealing two bases.
"Standard for him," Cain said. "It's ridiculous. He's definitely on fire right now. We're loving it."
Cain (5-2) allowed two runs, one earned, and won for the fourth start in a row. Santiago Casilla gave up one hit in 1 1/3 scoreless innings for his 12th save in 13 chances.
The teams split the four-game series, and the Giants concluded a 4-3 trip.
On a steal in the eighth inning, Cabrera slid into second baseman Omar Infante's glove as the ball arrived. When the throw was wild, Cabrera rose and continued to third, and after receiving treatment from a trainer, he stayed in the game.
|More on Giants-Marlins|
|More MLB coverage|
"The ball hit me on the dive," Cabrera said. "I don't know if it hit me clean or not, but the ball grazed me, but I'm OK."
Cabrera totaled four hits for the third time this season. He homered in the first off Ricky Nolasco, then singled three times to hike his average this month to .426.
"He's just hitting everything right now, so there's not much you can do," Nolasco said. "You make good pitches on him and he still finds a hole. Not fun seeing him when he's hot like that."
Nolasco (5-3) allowed three runs in seven innings. Two of the runs scored on two-out extra-base hits.
"I made one more mistake than Cain did," Nolasco said. "I knew he was going to be good. He always is. He just outpitched me today."
The Marlins' lineup included three position players batting under .190, and they mustered only six hits against Cain and three relievers.
Miami went 2 for 10 with runners in scoring position. Teams are batting .138 against Cain in those situations this season.
"I was glad I was able to work around some jams I got myself in," Cain said. "And then having the bullpen come in and pick me up was huge."
Cabrera took care of the offense. He hit a two-out homer in the first, then led off the fourth with a single, stole second and scored on a sacrifice fly by Angel Pagan to make it 2-0.
After Cabrera singled with two outs in the sixth, Buster Posey hit an RBI double off the center-field wall near the 418-foot sign to put the Giants up 3-1.
Cabrera finished 9 for 18 in the series.
"Melky was a one-man show this week," Marlins manager Ozzie Guillen said. "He hit everything we threw -- slider, curveball, changeup, and fastball."
Said Giants manager Bruce Bochy: "I can't think where we would be without him."
Trailing 3-1, Miami scored an unearned run in the seventh after center fielder Pagan mishandled Bryan Petersen's single for an error -- the 51st by the Giants, most in the majors. Petersen came home on a two-out single by Jose Reyes that made the score 3-2 and put runners at the corners, but Sergio Romo came on to strike out Infante and end the inning.
Romo lowered his ERA to 0.61. He also served as Cabrera's postgame translator.
Casilla pitched more than one inning to earn a save for the first time since Oct. 3, 2010, and he lowered his ERA to 1.29.
- Before the game, the Marlins selected the contract of OF Justin Ruggiano, who was acquired in a trade with Houston. He pinch hit in the eighth and struck out.
- Marlins OF Kevin Mattison was optioned to Triple-A New Orleans, and RHP Jose Ceda (right elbow) was transferred to the 60-day disabled list.
- Pagan made a diving, backhanded catch of John Buck's liner in left-center leading off the third inning.
- Aubrey Huff went 0 for 3 and is 2 for 20 (.100) lifetime against Nolasco.
- With a crowd of 30,199, the Marlins topped 30,000 at home for the 11th time.
- LHP Barry Zito, scheduled to start Monday when the Giants play the Diamondbacks, is 4-8 in 17 games against them with an ERA of 5.36.