Berkman singled with two outs off Milwaukee starter Jeff Suppan, advanced on Carlos Lee's walk, then raced for home on Pence's single to left. Left fielder Ryan Braun threw home and catcher Jason Kendall tagged Berkman as he slid and touched the plate with his left hand.
Umpire Delfin Colon called Berkman out and the Astros slugger jumped and screamed in his face. Cooper ran out of the dugout, pushed Berkman away and started yelling at Colon.
Cooper was still incensed after the game.
"Tonight, overall, we got shafted by some poor umpiring," Cooper said. "It was a bad job of umpiring."
Berkman hadn't been ejected from a game since June 8, 2007. Berkman said he was infuriated when Colon told him that he never touched the plate.
"I definitely touched home," Berkman said. "From there, it's his discretion. I was pretty animated and usually they don't like you to be quite that animated. It was quick, but I don't think it was completely unjustified."
Darin Erstad replaced Berkman in the lineup and bench coach Ed Romero took over Cooper's duties.
Fielder tied the game in the seventh with his hit against Houston reliever Tim Byrdak and Hart's hit off Chris Sampson gave Milwaukee its first lead. Astros reliever Jeff Fulchino (0-1) took the loss after hitting Braun with a pitch earlier in the inning.
The Brewers have won 14 of 17 and remained unbeaten in their last 10 series (8-0-2). They came from behind to win for the 15th time this season.
Milwaukee relievers Seth McClung (1-1), Carlos Villanueva, Todd Coffey and Trevor Hoffman allowed two Houston hits over the final four innings. Hoffman pitched a scoreless ninth to improve to 11 for 11 in save chances this season.
"It's good to see that everybody's firing," McClung said.
Houston starter Roy Oswalt was denied a decision for the seventh time in eight starts and Houston lost for the eighth time this season after holding a lead.
Oswalt threw 77 strikes in 106 pitches and the Brewers felt lucky to win with how well he was throwing.
"He really beared down when we got guys on base," said Braun, who went 2 for 4. "He didn't throw many balls, seemed like he was ahead of everybody. It's nice when you can find a way to win when a guy like that is starting for the other team."
Pence gave the Astros a 2-0 lead in the second, driving a 3-1 pitch over the center-field wall off Suppan after Lee singled.
Tejada led off the Houston fourth with a homer to left, his second solo shot in two nights. Tejada has hit all four of his home runs this season in the last 12 games.
But Houston's night started crumbling in the fifth.
The Brewers loaded the bases with one out and scored their first run when the Astros couldn't finish a double play on Braun's grounder.
After the ejections, Oswalt's outing fell apart with one out in the seventh, when Craig Counsell singled and J.J. Hardy walked. The Astros used four pitchers in the inning, but Hart doubled down the right-field line to score Braun and put the Brewers up for good.
"I was trying to make every pitch count," Oswalt said. "It just got to me in the seventh inning. I got pretty low on gas trying to be so fine, so long."
The Astros dropped to 0-19 when trailing after seven innings. ... Cooper said LHP Mike Hampton will make his next scheduled start, Sunday against Texas. Hampton left Tuesday's game after four innings with a cut on his left thumb. ... The Astros optioned infielder Jason Smith to Triple-A Round Rock and recalled IF Edwin Maysonet. ... Milwaukee traded minor league outfielder Tony Gwynn, Jr. to San Diego for outfielder Jody Gerut. Gwynn, 26, the son of Hall of Fame outfielder Tony Gwynn, was hitting .309 for Nashville, the Brewers Triple-A affiliate.