With Villa having played a game more than their rivals for fourth place in the Barclays Premier League, they knew only victory at Manchester City would be good enough.
And they got off to the perfect start by taking the lead in the 16th minute through John Carew.
Carew immediately smashed a shot against the bar but City went down the other end and Emmanuel Adebayor grabbed a second.
Villa pushed in the second half but could not break City's resistance and Craig Bellamy wrapped up the points in the last minute.
It was hardly a classic but the three points that Tottenham collected in the narrow 1-0 home win over lowly Bolton was all that mattered.
Birmingham kept their unbeaten home run going with a 2-1 victory over Burnley in the day's early game.
Aruna Dindane put them ahead in the 20th minute with a header only for Kevin Doyle to level, but John Utaka restored Pompey's lead just before half-time.
Sylvan Ebanks-Blake missed a good chance for the visitorâ€™s to equalise before Michael Brown made the points safe in the 67th minute.
Phil Jagielka had a header ruled out for offside for the Toffees.