Villa moved up in numbers from the left in the build-up, with Lucas Digne finding Ollie Watkins, and the Englishman cutting the ball across to McGinn to slot it past Chelsea goalkeeper Marcus Bettinelli to give them a seventh-minute lead.
Chelsea came close to levelling four minutes later when Omari Hutchinson’s curling effort crashed against the far post but that was as close they got to an equaliser.
Many of the English clubs' stars were missing for the winter friendly but it provided both sides with a chance to give several members of their squads game time ahead of the resumption of the Premier League in two weeks.
Chelsea suffered a huge blow when Armando Broja was taken off on a stretcher with a nasty injury in the first half. It looked like an ACL tear and could well be a long-term injury.
Chelsea train in Abu Dhabi - in pictures
McGinn’s early strike and Broja's injury were the biggest moments of the first half, while youngsters Arjan Raikhy and Hutchinson came very close to scoring.
Dion Rankine, who came on for Broja in the 23rd minute, sprang into action by setting up Lewis Hall with space inside the area but his low shot was pushed out by Villa goalkeeper Robin Olsen in the second minute of the second half.
Villa had the chance to double the lead shortly afterwards. McGinn found Leon Bailey with a neat pass to set-up the Jamaican one-on-one inside the Chelsea box, but Bettinelli dived to parry his effort.
Villa could have put the game to bed had Danny Ings tucked the ball past Bettinelli after Cameron Archer had made a dash from the middle of the pitch to create space for him.
The final quarter of the game lacked intensity, with both sides settling to play at a slower pace and make an occasional break into each other’s territories. Having taken the early lead, Villa defended well throughout the game to deny Chelsea a chance to get back into the game.
Villa’s victory provided their new manager Unai Emery with the perfect platform ahead of the second half of the Premier League campaign.
The win against Chelsea comes after their 2-2 draw against Brighton in a friendly in Dubai on Thursday.