The England midfielder converted from the spot in the 83rd minute on Sunday after Blues defender Roger Johnson had been adjudged to have brought down Villa striker Gabriel Agbonlahor – much to the fury of the visitors.
Villa are now level on points with fourth-placed Tottenham in the Premier League table, although they have played a game more and have an inferior goal difference.
Martin O’Neill named an unchanged side for the encounter, keeping faith with the side which triumphed at Hull in midweek.
Blues suffered a setback with central defender Scott Dann ruled out by a pulled calf, meaning former Villa player Liam Ridgewell switched from left-back back into the middle and Gregory Vignal earned a rare start.
Birmingham manager Alex McLeish also recalled midfielder Sebastian Larsson in place of Keith Fahey.
The visitors were operating with a 4-5-1 formation at Villa Park with Cameron Jerome employed as the only out and out striker.
Lee Bowyer conceded an early free-kick against Milner but the centre from Villa skipper Stiliyan Petrov was headed by James Collins straight into the arms of Joe Hart.
The first half-chance fell to Birmingham after nine minutes when Bowyer picked out the run of Larsson.
The Sweden international flicked the ball wide of Brad Friedel but his shot from a narrow angle failed to hit the target.
Richard Dunne went off for treatment to a head injury and returned with it bandaged up.
Blues players were quick to put the challenges in on their opponents and appeared upset with some of referee Martin Atkinson’s decisions. Skipper Stephen Carr, Johnson and Barry Ferguson all made their feelings known to the official.
Petrov then needed treatment after being pole-axed when defending a powerful free-kick from Larsson.
Hart was called into meaningful action for the first time when he turned aside a 20-yard effort from Petrov.
The England keeper also reacted well to keep out a powerful 25-yard shot from Stewart Downing.
But a mistake by Dunne almost presented City with the opener. The central defender allowed a throw out from Friedel to slip under his foot straight into the path of Larsson.
But the Swede chose to try to sidefoot the ball into the net and Friedel was able to recover.
Friedel then parried away a 25-yard effort from Craig Gardner before Hart made a magnificent save to keep his side on level terms.
Collins connected perfectly with his volley from 12 yards but Hart somehow managed to fingertip the ball over.
Birmingham, who have lost the last five meetings with Villa, began the second half in confident fashion and came close on three occasions to breaking the deadlock.
Ferguson’s through-ball was perfect for Jerome to run on to and Friedel made a superb block on his shot from close range.
The loose ball fell to James McFadden and the Scotland international cut back inside before having a shot deflected past the post.
The resulting corner from Larsson picked out the run of Ridgewell whose header was cleared off the line by Downing.
Carlos Cuellar became the first player to be booked after 53 minutes for a challenge on Jerome and two minutes later Vignal was also yellow carded for fouling Downing.
Jerome was causing problems to Villa and winning a series of free-kicks.
The best chances continued to fall City’s way and Friedel made another superb save to deny Bowyer from close range after Gardner’s initial shot had been blocked.
Dunne headed over from Milner’s centre but Villa were struggling to make an impact.
With 20 minutes remaining, O’Neill decided to make his first change with Emile Heskey replacing the ineffective John Carew.
McLeish responded by making a double switch with Keith Fahey and Stuart Parnaby replacing Larsson and Vignal.
Former Birmingham player Heskey almost made an instant impact. He played a one-two with Agbonlahor and saw his shot deflected inches past the post by a crucial touch from Hart.
Dunne flashed a header over the bar from a Young corner but with seven minutes remaining Villa finally broke the deadlock.
Johnson looked like he got the ball when he challenged Agbonlahor in the box but referee Martin Atkinson decided he had brought down the Villa player and pointed to the spot.
Carr and Johnson were booked before Milner hammered in the spot-kick past Hart.