Atkinson pointed to the spot seven minutes from time after Blues defender Roger Johnson appeared to win the ball in a challenge with Gabriel Agbonlahor.
James Milner fired the resulting kick past the otherwise impressive City keeper Joe Hart, leaving McLeish fuming.
“I shook his hand at the end as I always do with the refs and said: ‘you called it wrong, the big decision and you didn’t get it right, I didn’t think you were up with play to make that call’. He clearly wasn’t up with play.”
Villa boss Martin O’Neill added: “It’s a major victory for us.”
Birmingham enjoyed the better of the chances in his 100th second city derby in the top-flight, but found Villa stopper Brad Friedel in inspired form.