Birmingham beat Reading 2-1 to reach the fifth round of the FA Cup on Tuesday, winning on a 67th-minute goal by Julian Gray.
Preston beat Crystal Palace 2-1 in the other fourth-round replay with two goals by Daniele Dichio, including the winner in the 88th minute.
Birmingham took the lead on a goal by Mikael Forssell in the 30th minute before Stephen Hunt equalized in the 51st. Gray headed the winning goal from close range.
"It was a hard game for us, we knew they would come and try to push us back but thankfully we got the result," Gray said.
Reading, which leads the English League Championship standings by 10 points, rested many of its first team for the match, as did Birmingham.
"I'm delighted for the young lads. It was a horrible night and the ball was swerving all over the place in atrocious conditions," Birmingham manager Steve Bruce said. "It takes a little bit of time to settle. A few of them haven't played at this level. I thought the reaction was terrific after Reading equalized."
At Crystal Palace, Darren Ward gave Palace the lead in the 26th before Dichio rallied Preston with a goal in the 35th and his winner with two minutes remaining.
Birmingham will play Stoke City in the next round, while Preston will face either Coventry or Middlesbrough, who play their replay today.
Paul Hartley converted an 83rd-minute penalty and rallied Hearts to a 1-1 draw against Dundee United.
The draw gave second-place Hearts 51 points, moving it within seven of league-leading Celtic. Defending champion Rangers is third with 43 points.
Dundee United took the lead in the 34th minute on a goal by Grant Brebner. Hearts was awarded a penalty when Alan Archibald's fouled Steven Pressley.
Both clubs ended the match with 10 men. Dundee United's Barry Robson was sent off in the 85th minute for a foul on Pressley, while Hearts' Julien Brellier received a red card a minute later for a push on David McCracken.
Brilliant work in goal by Oliver Kahn helped Bayern Munich escape with a 0-0 draw against Hertha Berlin.
The Germany 'keeper held tough shots by the fifth-placed club's Yildiray Basturk and Arne Friedrich. The dismal second half by league leader Bayern ended its four-match winning streak.
Bayern didn't have a dangerous shot after the break in front of 74,000 at Berlin's Olympiastadion. A harmless 72nd-minute header by Paolo Guerrero was the side's first second-half attempt on goal.
"If we had any luck we would have won," said Berlin coach Falko Goetz. "Of course they had an outstanding Ollie Kahn."
The game was delayed for 15 minutes because Bayern's bus was caught in traffic, and the match was played on a choppy pitch because of heavy snowfall.
But Bayern controlled the match during the first 45 minutes, with Michael Ballack going close when he chested a pass, then volleyed over the crossbar. After the half, the team came out flat.
"We certainly didn't have our best day. We weren't really concentrated," Bayern coach Felix Magath said. "We'll have to be satisfied with the draw."
The draw gave Bremen, nine points back, and Hamburger SV, 10 behind, a chance to close the gap on the runaway leader if they can win on Wednesday.
FC Kaiserslautern and FC Cologne drew 2-2 in a battle of the bottom teams, while Dortmund beat Duisburg 2-0, and Mainz and Bielefeld finished 1-1.
Dortmund's young team remained in the hunt for European berths in sixth place as defender Markus Brzenska scored in the 67th and Tomas Rosicky hit from the spot three minutes before the final whistle.



