Dioner Navarro added a two-run double for the White Sox, who improved to 6-3-1 in Cactus League play. The Padres are now 2-8-1.
Shields, the Padres' No. 2 starting pitcher, allowed four runs on six hits over 2 2/3 innings with two walks and one strikeout.
"I didn't feel great as far as mechanical stuff. I just wasn't really that sharp," Shields said. "I was trying to throw a lot of fastballs today, for the most part. A few changeups, a couple cutters, I threw maybe one curveball today. But I just wasn't locating.
"I was trying to work on fastball command on the inside part of the plate to lefties today, and I was just missing. I've got to be better."
Chicago pitcher Carlos Rodon, the team's No. 3 starter in the rotation, allowed two hits over four scoreless innings. He had three strikeouts.
Cory Spangenberg hit an RBI double in the sixth inning as the Padres avoided being shut out.
Up next for White Sox:Erik Johnson gets the start for the first of six games between the Cubs and White Sox to be played this season, with the first pitch scheduled for 2:05 p.m. CT in Mesa, Ariz. Jason Benetti will make his broadcast debut for the South Siders. Mat Latos will start in a "B" game Saturday morning in Surprise, Ariz.
Up next for Padres: The Padres face the Indians for the second time in three days when they play a 1:30 p.m. PT game on Saturday at the Peoria Sports Complex. Andrew Cashner is coming off an outing on March 7 when he tossed two scoreless innings against the Brewers in his first outing of the spring. Cashner, the No. 3 starter in the rotation, has reverted back to his old spike curveball from the past and threw several for strikes the last time out.