Tonight's attendance: 17,498
J.J. Hardy smacked a three-run homer off White Sox reliever Jesse Crain in the bottom of the seventh inning to give the Orioles a 6-5 lead and set up Jeremy Guthrie for his sixth win.
Matt Wieters doubled off John Danks for his third hit tonight, and he reached third base after sliding into Gordon Beckham's glove and jarring the ball loose. Crain replaced Danks with one out, and Hardy greeted him with a shot into the left field seats.
Hardy is the first Orioles shortstop with 20 home runs since Miguel Tejada in 2006. And the Orioles are the first team in the majors this season to have three players with 20 or more homers. Mark Reynolds has 26 and Adam Jones has 20.
Hardy is 3-for-4 with two doubles, a homer and four RBIs after missing the last three games with a sore ankle.
Guthrie didn't walk a batter tonight for only the third time in 24 starts, but he was charged with five runs (four earned) and eight hits in seven innings. He threw 103 pitches, 70 for strikes.
Guthrie was staring at his 16th loss until the Orioles rallied. Now Jim Johnson has entered the game.
Johnson began warming after the Orioles put two runners on base. Chris Jakubauskas was going to replace Guthrie, but only if the Orioles continued to trail.
Instant update: The White Sox scored twice off Johnson in the top of the eighth to take a 7-6 lead.
Josh Bell couldn't reach another ball hit to his left side, this one from Alex Rios, as Carlos Quentin scored the go-ahead run.
Quentin took second on A.J. Pierzynski's sacrifice fly after Adam Jones missed the cutoff man, enabling him to score on Rios' single.
Down on the farm, Triple-A Norfolk second baseman Ryan Adams extended his hitting streak to 14 games with his 10th home run. That streak ties Brandon Snyder for the longest by a Tides player this season.
Steve Johnson allowed five runs and 10 hits in 6 2/3 innings against Lehigh Valley, with three walks and five strikeouts. He threw 111 pitches, 68 for strikes.