Hammel said he felt as if the D-backs ambushed him early in the game.
"There were a lot of first-pitch hacks on heaters, and really they were seeing heaters," Hammel said. "I made the adjustment after the second inning and started going offspeed early, and it worked out pretty well. I had very good breaking stuff today. I threw a couple good changeups, and obviously, getting ahead was big."
Arizona's Jean Segura reached on an infield single to lead off the game, advanced on a single by Socrates Brito, and stole third before scoring on David Peralta's sacrifice fly. But Segura's throwing error in the Cubs' first allowed Dexter Fowler to score after he tripled.
Heyward walked, and one out later, he scored on Bryant's double to put the Cubs ahead, 2-1. Bryant scored on Schwarber's triple, and Soler followed with his second spring homer to open a 5-1 lead. Kristopher Negron went deep in the sixth, while John Andreoli homered in the eighth, giving the Cubs 25 home runs this spring, second most among Cactus League teams.
The Cubs had runners at first and second with one out in the third, and they made it 6-1 on Soler's RBI double, which knocked Arizona starter Archie Bradley out. Bradley, vying for the D-backs' fifth-starter spot, gave up six runs on five hits and walked three over 2 1/3 innings.
Segura hit his second spring home run with one out in the Arizona fifth off Drew Rucinski.
D-backs closer Brad Ziegler made his second appearance this spring, and he gave up two runs in the fourth on Heyward's triple and a sacrifice fly by Anthony Rizzo.
Up next for the D-backs:Zack Godley, who is competing for the No. 5 spot in the rotation, will start Friday afternoon against the Dodgers at Salt River Fields. The game could see the return of outfielder Yasmany Tomas, who has been out with a sore left knee.
Up next for the Cubs:Kyle Hendricks will start Friday when the Cubs travel to Glendale, Ariz., to face their crosstown rivals, the White Sox. This will be the right-hander's third start and fourth appearance this spring. So far, he's struck out 11 over nine innings, and given up one run. The game will begin at 2:05 p.m. CT and be broadcast on MLB.TV and Cubs.com.