Anthony Rizzo drove in all of the Chicago runs, enabling the Cubs to snap the Cardinals' five-game winning streak.
Jackson (6-10) threw only 91 pitches, striking out five without a walk. Blake Parker, James Russell, Pedro Strop and Kevin Gregg combined to give up a hit over the final two innings with Gregg picking up his 16th save.
St. Louis put two runners on with one away in the eighth, but Russell and Strop each retired a batter to escape the jam.
Rizzo drove in a run with a first-inning double and brought in two more with a single in the third.
Those runs were charged to Jake Westbrook (5-4), who took the loss in a seven-inning effort.