"It was good to win, no matter how we did it or who did it," said McPherson, who started the season at Triple-A Salt Lake.
Lackey (5-2) gave up two runs and six hits, struck out five and walked two as the teams split the four-game series that was dominated by solid pitching on both sides.
"Both clubs pitched outstanding baseball and had timely defense," Angels manager Mike Scioscia said. "It was a good series if you're a baseball purist."
Scot Shields got the final four outs for his sixth save in seven chances.
The Angels, who have been limited to three runs or fewer in 13 of 23 games this month, canceled batting practice -- except for a few players who sharpened their swings in the indoor batting cage.
One of those players was McPherson, who homered to center field on his first pitch from Jose Contreras (2-2) with two outs in the seventh. Garret Anderson scored after hitting a leadoff single and advancing to second on a sacrifice by Jeff DaVanon.
"I've been trying to get back to basics and see if it works," said McPherson, who had his first major league triple Wednesday night. "I haven't been getting the results, but I've been making adjustments. Hitting is contagious. Hopefully, this gets us back on a winning streak."
The Angels' other run came in the first on a RBI groundout by Darin Erstad after Chone Figgins hit a leadoff triple.
Contreras allowed three runs and four hits in seven innings, struck out a season-high nine and walked one.
"This kid deserved better," White Sox manager Ozzie Guillen said. "It seems like the pitchers can't make a mistake because we haven't been giving them run support lately."
Carl Everett's struggles reflected what the rest of the White Sox went through. He was 1-for-15 in the series, with his only hit being a homer that helped Chicago win 2-1 Tuesday.
"Our pitching has been carrying us and our pitchers should be tired of carrying us," he said. "They've been giving us their max effort the whole time. They've been doing great and we've just been mediocre."
After giving up a run in the first, Contreras didn't allow another hit until Orlando Cabrera's two-out double in the fifth.
"McPherson was waiting for that pitch because that's the pitch I wanted to throw him -- a four-seam fastball," Contreras said through a translator. "I hit the location I wanted to hit and he was sitting on that. You can lose a game with one pitch. It hurts me to lose because we were so close, but it hurts me more because the team played a great game."
Chicago tied the game at 1 in the fourth on Tadahito Iguchi's RBI single. Lackey threw a wild pitch and loaded the bases before escaping.
"A couple well-placed balls just found the spaces to drop a couple in," he said. "Contreras threw a heck of a game and kept us off-balance."
The White Sox led 2-1 in the seventh on Pablo Ozuna's opposite-field RBI single.
The Angels won the series opener Monday behind 22-year-old Ervin Santana's five-hit shutout, snapping Jon Garland's 10-game winning streak. Chicago won 2-1 in 11 innings Tuesday and Freddy Garcia won 4-2 Wednesday.
- Figgins' nine-game hitting streak is the longest by an Angel this season.
- Shields has allowed one earned run in his last 19 outings and lowered his ERA to 0.96 this season.
- The White Sox haven't won a series at Angel Stadium since Aug. 5-7, 1994. They are 15-39 in Anaheim since then.
- McPherson had his first RBI in 15 games.