Jeff Karstens scattered four hits over eight innings and the surging Pittsburgh Pirates blanked the Houston Astros 2-0 on Thursday night.

Karstens (2-2) struck out a season-high eight against just one walk as the Pirates completed their first four-game sweep of the Astros at home since 1979. Joel Hanrahan pitched the ninth to record his 22nd save.

Garrett Jones and Casey McGehee each drove in a run for Pittsburgh, which has won eight of nine to vault into first in the NL Central.

Houston's Bud Norris (5-6) gave up two runs and five hits in seven solid innings but the Astros' offense sputtered a day after trading slugger Carlos Lee to Miami. Houston managed four singles and didn't get a runner to third base until the ninth while losing its eighth straight game.

While the Astros are struggling, the Pirates are rolling behind an offense that has been among the hottest in the National League over the last six weeks.

There were no such fireworks on Thursday, but Karstens looked sharp after spending nearly two months on the disabled list earlier this season with shoulder inflammation and a hip flexor.

Deftly mixing his fastball with a curveball that followed orders, Karstens kept the Astros off balance all night. The right-hander threw 62 of his 89 pitches for strikes and looked an awful lot like the pitcher who spent the first half of the 2011 season among the NL leaders in ERA.

He tailed off as he piled up the innings last season and his problematic shoulder raised eyebrows this year. He got knocked around by Philadelphia in his return on June 17 but followed that up with seven efficient innings in 99-degree heat against St. Louis last Saturday.

It was more of the same against the Astros. Hard-hit balls were scarce as Houston was shut out for the eighth time this season.

The Pirates needed Karstens to be sharp after squandering a couple of opportunities to break the game open against Norris.

Jones and McGehee led off the second with back-to-back doubles to get the Pirates on the board but McGehee was stranded at third. The Pirates loaded the bases an inning later but could only muster Jones' sacrifice fly.

Another rally in the fifth was stopped short when Drew Sutton was picked off second, the kind of baserunning miscue that's been rare lately for baseball's biggest surprise.

Pittsburgh is 10 games over .500 for the first time since 1992, the last time it made the playoffs. Nearly two decades of losing have followed, but optimism is continuing to grow.

Houston, meanwhile, can't wait to get home after a dreadful 0-7 road trip. Brent Johnson got the start at first in place of Lee and went 0 for 4. Third baseman Matt Dominguez, one of two players the Astros acquired for Lee, went hitless in two at-bats but was clean in the field.

NOTES: The Astros called up reliever Enerio Del Rosario from Triple-A Oklahoma City to give the weary bullpen some help while sending left-handed starter Dallas Keuchel down for at least 10 days. ... The Pirates open a three-game series with San Francisco on Friday. Erik Bedard (4-9, 4.57 ERA) starts for Pittsburgh against Barry Zito (6-6, 3.84). ... The Astros return home Friday to play the Brewers. J.A. Happ (6-8, 4.81 ERA) faces Milwaukee's Yovani Gallardo (6-6, 3.87).