Happ hit an RBI single in the sixth inning to score Kris Bryant, and Javier Báez scored on a throwing error to give the Cubs their third win of their current nine-game road trip.
Hendricks had a flawless evening, pitching seven innings of shutout baseball and striking out seven Cardinals batters. He scattered seven hits in the game, and continued his run of strong pitching against the Redbirds this season.
Kimbrel picked up his eighth save of the season in the winning effort.
Miles Mikolas allowed one run in 5.2 innings of work, but was saddled with the loss.
Both Hendricks and Mikolas were cruising into the sixth inning when the Cubs finally took the lead. After Bryant reached first on an error and advanced to second on an Anthony Rizzo walk, Happ rifled a single into right field, scoring Bryant and giving the Cubs a 1-0 edge.
After two more scoreless innings from Hendricks, the Cubs added an insurance run in the eighth. Báez looped a ground rule double down the left field line that bounced into the stands, and then was later able to score after Cardinals catcher Matt Wieters threw a ball into center field, putting the Cubs ahead by two runs.
Kimbrel made things interesting in the ninth, giving up a single to Kolten Wong and a double to Rangel Ravelo, but he was able to induce a groundout from Wieters and a strikeout from Yairo Munoz to seal the victory.
The Cubs will go for the series win on Thursday evening at Busch Stadium, with first pitch scheduled for 6:15 p.m.