Lohse (3-0) won for the third time in four starts, holding the Pirates to six hits while not issuing a walk and fanning five.
The right-hander threw 69 of his 97 pitches for strikes and lowered his ERA to a sparkling 0.99 over 27 innings this season.
David Freese stroked a two-run single in the third inning and Rafael Furcal went 3-for-4 with a run-scoring hit as the National League Central-leading Cardinals took the rubber match of their three-game set with Pittsburgh.
Bucs starter Erik Bedard (0-4) surrendered three runs (two earned) on seven hits over seven frames.
Casey McGehee drove in the Pirates' only run.
NBC reportedly holds celebs hostage to Jimmy Fallon's show
Ray Liotta sues skin care company over use of likeness