The Padres were trailing 2-0 when they struck for six runs in the sixth.
Grandal then lined a pitch to medium-deep center field that went over the head of Miami's Justin Ruggiano and rolled to the fence, scoring three runs.
Yonder Alonso later drove in Grandal with a single to cap the outburst, which handed San Diego a victory in the opener of a three-game series.
Kip Wells (2-3) earned the victory, limiting the Marlins to two runs on five hits in a six-inning effort.
Zambrano ended up allowing five runs (four earned), walking four and surrendering three hits over five innings. The right-hander fanned four.
Carlos Lee went 2-for-4 with an RBI for Miami.
Ray Liotta sues skin care company over use of likeness
Boston schools pull out free condoms over wrapping complaints