Chili Davis added a three-run homer for the Giants, who lost third baseman Chris Brown in the seventh inning when the left side of Brown's jaw was broken by a pitch from Cardinal pitcher Danny Cox.
Brown was taken to Jewish Hospital in St. Louis, and a Giant spokesman said a decision as to his status would be made today. The former Crenshaw High star faces probable surgery.
Maldonado became the first Giant to hit for the cycle since Jeffrey Leonard did it June 22, 1985, against Cincinnati. Maldonado tripled in the third inning, homered in the seventh, singled in the eighth and doubled in the ninth.
The Giants trailed, 7-3, in the eighth, but strung together seven consecutive hits to score five runs. With one out, Bob Melvin and Mike Aldrete singled off left-hander Pat Perry. Davis then lofted a home run deep into the left-field bleachers to pull the Giants to within a run.
Bill Dawley (0-3) relieved, and Leonard blooped a triple into short right field. First baseman Jack Clark threw to third baseman Terry Pendleton, who let the throw get past him, allowing Leonard to score and tie the game, 7-7.
Singles by Maldonado and Joel Youngblood brought on Rick Horton, who gave up an RBI single to pinch-hitter Jose Uribe that put the Giants ahead, 8-7.