Match ends, Reading 0, Birmingham City 2.
Birmingham City moved off the bottom of the Championship table with a superb win at Reading that increases the pressure on Royals manager Jaap Stam.
Jacques Maghoma slammed in the opener for Blues, who ended a six-game winless sequence by beating Leeds on Saturday.
Sam Gallagher's cool finish after half-time extended Reading's own run without a victory to six matches.
Birmingham, who scored two in a league game for only the second time in 2017-18, leapfrog Sunderland to go 23rd.
Steve Cotterill's side are only one point off 21st-placed Hull City after recording back-to-back league wins for the first time since November 2016.
They were good value for their victory over the Royals, who came closest to scoring in stoppage time at the end of the match when Yann Kermorgant struck the woodwork.
Reading's 12th loss of the campaign leaves them four points above the relegation places, having reached the Championship play-off final last May.
Stam, 45, is in his first managerial job in English football after being an assistant manager at Ajax.
Reading boss Jaap Stam told BBC Radio Berkshire:
"I don't agree it was dreadful, the supporters might talk about it like that. We had chances in the first half to score, but if you concede the first goal from a set-piece that makes it difficult.
"Then we need to get back in to the game and the confidence of the players gets less, it makes it more difficult, we're reacting rather than anticipating situations.
"I am cross with my players in some ways, but I can't blame them for not working, because they are working very hard, sometimes when you're not winning games it's difficult to get back into the game.
"If we look at the players and how we can play, we can look at what we do differently. We are very unhappy, it's not like we're happy and dancing in the dressing room, it's easy to blame people when things are going wrong, we need to stick together. I told them that. We need to work on that. They need to make their own decisions."
Birmingham manager Steve Cotterill told BBC WM:
"That (result) has been coming for a little while and we were able to finish our chances off.
"I am delighted with that and we are really pleased with it. I think we deserved to win the game.
"Reading are a good team but we are getting better. We are learning, we are fitter, we are more organised and we are settled now."
- 10SwiftBooked at 85mins
- 4van den BergSubstituted forBlackettat 45'minutes
- 14AlukoSubstituted forMcClearyat 67'minutes
- 22ClementSubstituted forKellyat 74'minutes
- 8GardnerSubstituted forNdoyeat 86'minutes
- 19MaghomaSubstituted forNsueat 72'minutes
- 18GallagherSubstituted forAdamsat 90+1'minutes
- James Linington
- Shots on Target
Second Half ends, Reading 0, Birmingham City 2.
Corner, Birmingham City. Conceded by Chris Gunter.
Substitution, Birmingham City. Che Adams replaces Sam Gallagher.
Attempt missed. Yann Kermorgant (Reading) right footed shot from the left side of the box misses to the right following a corner.
Corner, Reading. Conceded by Maxime Colin.
Attempt blocked. Yann Kermorgant (Reading) header from the centre of the box is blocked. Assisted by Modou Barrow with a cross.
Substitution, Birmingham City. Cheikh Ndoye replaces Craig Gardner.
John Swift (Reading) wins a free kick in the defensive half.
Foul by Craig Gardner (Birmingham City).
John Swift (Reading) is shown the yellow card for a bad foul.
Foul by John Swift (Reading).
Jeremie Boga (Birmingham City) wins a free kick on the left wing.
Paul McShane (Reading) wins a free kick in the attacking half.
Foul by Sam Gallagher (Birmingham City).
Attempt blocked. Harlee Dean (Birmingham City) header from the centre of the box is blocked.
Corner, Birmingham City. Conceded by Liam Moore.
Attempt blocked. Jeremie Boga (Birmingham City) right footed shot from the centre of the box is blocked. Assisted by Craig Gardner.
John Swift (Reading) wins a free kick on the left wing.
Foul by Maxime Colin (Birmingham City).