The game looked like it would end in stalemate, only for the Villa substitute to snatch the victory at the death.
A tame shot from Gardner was not dealt with by Schwarzer and Fulham paid the ultimate price as Weimann bundled the loose ball into the net.
With no fresh injury concerns, Alex McLeish named the same team that left Ewood Park with a point last week.
Martin Jol however made one change to the side which beat Wolves, with Stephen Kelly coming in for Aaron Hughes who dropped to the bench.
New signing Mahamadou Diarra had to wait for his first start as he began the match on the Fulham bench.
The hosts began the match on the front foot, pressing Fulham high up the pitch and disrupting their passing in midfield.
Villa were instructed by McLeish to take the game to Fulham and it was showing as they didn't allow Fulham to gain any rhythm. Danny Murphy was the main culprit for the visitors, giving the ball away on a couple of occasions.
Despite enjoying plenty of the possession, the home side couldn't create anything more than a series of corners, none of which they looked like scoring from.
The best chance of the half came after 17 minutes when Murphy carelessly gave the ball away in midfield. Villa quickly latched on to it and the chance fell to a racing Gabriel Agbonlahor who fired his shot on target but Mark Schwarzer managed to push it away.
Murphy’s misery was compiled as he took an elbow in the face from Stephen Ireland which could have led to a dismissal but the referee Jon Moss deemed it accidental.
The home side lost their impetus as the game progressed and only managed a couple of speculative shots from distance by Stilian Petrov, all dealt with comfortably by Schwarzer.
Fulham’s travelling supporters had to wait for first half injury time for their first real sight of goal. A clever free-kick from Murphy fed Andy Johnson down the left side, he slid a pass across the face of the penalty area with Pavel Pogrebnyak only inches away from turning it in.
It finished goalless at the break with Villa knowing they should be in front considering how poor Fulham had been.
Jol brought off the out-of-sorts Murphy during the interval for Diarra in an attempt to shore up the Fulham midfield, which had looked dangerously lightweight in the first half.
The roles were reversed in the second half as Fulham came out with intent and Aston Villa were pegged back into their own half.
Despite Fulham getting back into the game it was the home side who came close again to opening the scoring.
Marc Albrighton’s shot from a tight angle inside the penalty area rattled the crossbar, after Hutton did well down the right flank.
The next chance came Fulham’s way as Damien Duff broke into the Villa box but he couldn't control his shot on the half volley firing it over the bar.
The returning Bryan Ruiz was introduced in place of the injured Andy Johnson with Fulham looking for some inspiration. Meanwhile Charles N’Zogbia, who had a very ineffective afternoon, was replaced by Andreas Weimann, a change greeted by boos from the Villa Park crowd.
Fulham looked the more confident side following the substitutions and John Arne Riise nearly provided a contender for goal of the season. He controlled the ball on his chest and struck a first time volley which flew wide of the post.
Carlos Cuellar had a half chance as the match drew to an end, but with his back to goal he put it wide from six yards out.
Just when the Villa fans were making their way out of the ground, Gary Gardner was allowed space to shoot. Schwarzer couldn't hold on to his effort and Weimann was quickest to follow up and scrambled the ball into the net at the second time of asking.
Commentaries, Stats, Player Ratings and much more,
Visit Goal.com Live Scores!