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.
Moore to attend retreat in to avoid Kutcher's wedding
Turkey considering to use pistachios to heat country’s first eco-city