CHICAGO -- Greg Maddux was frustrated. His streak of non-losing seasons is in jeopardy, but he was more focused on the pitches he left up in the strike zone.
"I'm not going to feel sorry for myself," said Maddux, who has 318 wins.
Jason Bay hit a three-run homer in the fifth and Nate McLouth added a solo shot for Pittsburgh in the eighth.
Maddux (13-14) is scheduled to start the season finale Sunday at Houston, and has not finished below .500 since 1987, when he was 6-14 for the Cubs. He was 15-15 in 1990.
Maddux allowed five runs and eight hits and lost for the third time in four starts.
When asked if Maddux would start the final game, manager Dusty Baker responded: "I got to talk to him first. I'm sure he wants to get back to .500. I'm hoping he does. We tried everything to get him that win tonight."
Maddux made it clear that he wanted the chance, too.
"They're still paying me, right?" he asked.
While Maddux downplayed the streak, McLouth was in awe.
"He's had a remarkable career, and that streak is just ridiculous," he said.
Maddux, who has a vesting option for next season, has indicated that he will be back next season. Still, fans cheered as if they were saying goodbye when he took the mound in the ninth.
"Except for a few pitches, he pitched great," first baseman Derrek Lee said. "We just couldn't get enough runs for him."
Bay, whose homer in the fifth gave the Pirates a 4-3 lead, had two hits. Freddy Sanchez extended his hitting streak to 13 games with a double and a single.
Rookie Zach Duke (7-2) allowed three runs -- one earned -- in eight innings and snapped a two-game losing streak since returning from the disabled list with a sprained ankle. He helped himself at the plate with two singles.
Salomon Torres pitched a scoreless ninth for his second save.
Nomar Garciaparra went 2-for-4 with a two-run homer for the Cubs.
With the Cubs ahead 3-1, Duke and Sanchez led off the fifth with singles. After Jack Wilson struck out, Bay homered to left-center on a 1-1 pitch to give the Pirates a 4-3 lead -- his 32nd home run of the season and 23rd on the road.
"Anytime you're going up against a guy like that you know you're not going to get much to hit," Bay said. "To get that, and to finish strong, means the world to me."
McLouth added a solo shot in the eighth -- his third homer.
"I didn't get them low enough," Maddux said of the pitches hit for home runs. "(When) you see what led up to the three-run home run, I didn't make a good pitch to the pitcher. ... Those are the guys you've got to get out to stay out of the big inning."
With the game tied 1-1, Cubs rookie Ryan Theriot reached on a throwing error by the shortstop Wilson leading off the third and moved to second on Neifi Perez's single. After Derrek Lee grounded into a double play, Garciaparra pulled a 3-2 pitch out to left to give the Cubs a 3-1 lead.
It was his ninth homer of the season -- each coming since Garciaparra was activated from the disabled list Aug. 5. Batting .157 in 51 at-bats when he tore a muscle in his left groin, free-agent-to-be Garciaparra is 50-for-159 since his return.
Duke did not allow a runner past second after that homer.
"It took me a little while to get on track," he said. "Early in this game, I didn't feel right. I was able to make an adjustment in the fourth inning and just kind of cruised after that."
Wednesday's game is the home finale for the Cubs and the Pirates' final road game. The Cubs play a four-game series at Houston, while the Pirates - after a day off - close with three at home against Milwaukee. ... With Cubs 2B Todd Walker nursing a strained right knee, Theriot started his first major-league game and batted leadoff. Theriot, called up from Double-A West Tenn. on Sept. 12, was 0-for-4 with a run.