Carlos Gonzalez hit a grand slam homer to give the Rockies a 4-3 lead in the third inning, but the Padres responded with four of their own in the bottom half of the inning.
Chris Denorfia tripled in two runs in that inning and scored in front of Grandal's fifth home run of the year.
Chase Headley added a solo homer for the Padres during a two-run eighth, wrapping up their fourth straight victory.
Despite giving up the grand slam, Jason Marquis (5-9) got the win, surviving five innings. He allowed nine hits and five Arizona relievers combined to give up only one more.
Drew Pomeranz (1-5) was knocked around for seven runs on nine hits in three innings to suffer the loss. The Rockies have dropped three in a row.