Garland (12-8) held the Cubs to four hits over seven innings, walking three and striking out three to gain his 12th win, one more than he notched all last season.
Mike Adams put Chicago down in the eighth and Heath Bell collected his major league-best 36th save with a scoreless ninth to give San Diego its second straight win in a four-game series at Wrigley Field.
Coupled with San Francisco's loss, the first-place Padres extended their lead in the National League West to five games.
Chase Headley drove in the game's only run with a first-inning RBI groundout.
Randy Wells (5-11) took the hard-luck loss, allowing only the single run on three hits in seven innings.