Bertrand Traore made the breakthrough in the 48th minute of the contest before Ollie Watkins netted a late second for Villa, who have moved into sixth position in the Premier League table.
Unai Emery's side have won each of their last four in the league, but it is now nine matches without a victory for Forest, who have dropped into 18th in the table, level on points with 17th-placed Everton.
The result has piled the pressure on Forest head coach Steve Cooper, who received a vote of confidence from the club's owner last week.
The first real opening of the match came in the 25th minute when Leon Bailey broke into a dangerous position before drilling a cross into Watkins, but Forest goalkeeper Keylor Navas was on hand to make an excellent save to keep out the in-form forward's header.
Villa dominated the possession in the opening 45 minutes, but it was a half short of opportunities, with a hugely uneventful first period ending all square.
The home side managed to take the lead early in the second period, though, with Traore curling one into the bottom corner of the net after Forest midfielder Jonjo Shelvey had prodded the ball towards his opponent following a save from Navas.
Forest had a half-chance to level the scores in the 53rd minute when Danilo broke into an advanced area before striking from the edge of the box, but Emiliano Martinez was on hand to make the save.
Down the other end, Villa had a chance for 2-0 in the 67th minute, with Emiliano Buendia just missing the post with a first-time strike after a cross had been deflected into his path.
The home side did manage to score a second in the final exchanges, though, with Watkins expertly chipping the ball over Navas after exchanging passes with Jacob Ramsey.
Next up for Villa is a home game against Newcastle United next Saturday, while relegation-threatened Forest will welcome Manchester United to the City Ground next Sunday.