Updated

Chris Johnson said it was foul and he had the best look at it.

Replays indicated he may have been right and that's just the way the season has gone for the Houston Astros.

A slow-roller down the third base line sent Houston to a franchise-worst 99th loss as the Chicago Cubs beat the Astros 4-3 in 12 innings on Friday.

With the bases loaded and one out, Marlon Byrd bounced a ball down the third base line. Johnson bobbled the ball with Starlin Castro charging home. Third base umpire David Rackley immediately signaled that the ball was fair to cue a Cubs celebration.

"I was right over top of it, so I had a really good look," Johnson said. "Once I saw it hit foul I just tried to make contact with it because the ball's dead, you know?"

"I'm not going to blow anybody up, really. We know the ball was foul. They'll probably know it after looking at replays. We'll just move on. People make mistakes."

Astros manager Brad Mills came out to argue, but wasn't screaming at the right umpire.

"I was more concerned about who was making the call," he said. "It was in front of the bag and (home plate umpire Jeff Nelson) said 'No, it was (Rackley's) call at third base the whole way,' because when the bases are loaded and the guy is coming from third base coming home, it's the other umpire's call. So I was yelling at one guy and he didn't have the call."

A dramatic ninth-inning comeback made the loss sting even more for Houston. Cubs starter Matt Garza was one strike from finishing off a five-hitter when Carlos Lee hit his second home run of the game, a two-run shot into the left-field bleachers that tied it 3-all.

"The two home runs allowed us to get that opportunity to hopefully win the thing in extra innings," Mills said. "Any time you can get a two-run homer like that to tie it up, you'd like to win the thing."

Lee had three hits and three RBIs for Houston. He opened the scoring with a solo blast leading off the second.

Lee has hit in 22 of his last 24 games, and has 23 career homers at Wrigley Field, third among active players.

"I would say since the All-Star break, I've been feeling pretty good," he said. "I've found a position where I feel real comfortable and I'm seeing the ball real good."

Eleven of Lee's 18 home runs have come in the second half and he's hitting over 25 points higher than he did in the first half.

Garza struck out four and threw a season-high 124 pitches, allowing seven hits and no walks. Jeff Samardzija (7-4) threw a scoreless 12th to pick up the win.

The only damage done to Garza came off of Lee's bat.

"It's one of those situations where I said, 'Here's my best. What do you got?' He guessed right and beat me," Garza said.

Geovany Soto led off the third with his 15th homer, and Aramis Ramirez had three hits, including his first triple of the season.

Astros starter Wandy Rodriguez allowed three runs and six hits over 5 2-3 innings, striking out five and walking four. Reliever David Carpenter (0-3) gave up the winning run.

"I thought Garza threw the ball well and Wandy hung right with him and threw the ball extremely well," Mills said.

Rodriguez's five strikeouts left him two shy of becoming the first Astros lefty to record 1,000 in a career.

The Astros swung early and often against Garza, who faced the minimum in five different innings and no more than four until the ninth. After allowing J.D. Martinez's leadoff single in the fourth, Garza retired the next 13 Astros in order.

Notes: Actor Martin Sheen performed during the seventh-inning stretch, singing "Take Me Out to the Ballgame." ... The Astros will send Henry Sosa to the mound on Saturday to face Chicago's Rodrigo Lopez.