Fowler connected with one out in the second, launching his second spring homer over the right-field wall. Andreoli tripled to lead off the third and then scored one out later when Johnson was called for a balk.
"You saw today, from top to bottom, and even the young guys we had in there today -- if we can get three or four [runs] with our [pitching] staff, we'll be pretty darn good," Hammel said of the potential of the Cubs lineup.
"Being aggressive in the zone, I thought I achieved that today," Johnson said. "All offspeed pitches I threw for strikes. I threw a slider early and behind as well as late in the counts. Curveballs were over late in the count as well as early, [the] fastball was aggressive over the plate."
The White Sox tallied in the fifth when Avisail Garcia reached on a throwing error by Candelario and Tyler Saladino brought Garcia home with a double off Aaron Brooks. Garcia added a solo shot in the seventh inning.
White Sox pitcher Jake Petricka had to leave the game after Andreoli's comebacker hit him on the right arm leading off the Cubs' fifth. Petricka was fine but taken out for precautionary measures and replaced by Daniel Webb.
Cubs up next:Kyle Hendricks will make his third spring appearance and second start on Sunday when the Cubs travel to Hohokam Stadium to face the Athletics. Hendricks gave up two hits over three scoreless innings in his last outing, striking out two. Kyle Schwarber was expected back in the Cubs' lineup after missing two days because of some soreness in his left knee. The game will begin at 1:05 p.m. MT and be broadcast on Gameday Audio via 670 AM.
White Sox up next:John Danks gets the call against the Diamondbacks for Sunday's contest at Camelback Ranch, with a 1:05 p.m. MT first pitch. Fans can watch Danks' third Cactus League start on an exclusive webcast on whitesox.com or listen on Gameday Audio via WLS. Nate Jones and Zach Duke also are scheduled to pitch.