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.
'How to Train Your Dragon 2' releases 5-minute clip
Lytro unveils camera that can focus a photo after shooting it