Burnett (1-2), starting his 15th season in the majors and his second with the Pirates, did not allow a base runner until he hit Daniel Descalso with a pitch with one away in the sixth.
Carlos Beltran doubled in the seventh for the Cardinals' only hit.
Pittsburgh leadoff man Starling Marte was a part of two of the Pirates' runs. He reached on a triple to start the first and came in on a single by Travis Snider. Marte made it to first base in the seventh when St. Louis third baseman David Freese committed a throwing error and Russell Martin scored on the play.
The loss went to Shelby Miller (2-1), who gave up two runs on six hits over six innings.
Dog comes home gnawing on human bone
Julius Randle breaks leg during NBA debut