It was QPR that had the first real chance of the early exchanges, but Tjarron Chery fired wide of the post in the sixth minute as Wolves struggled to find their rhythm at Loftus Road.
Chances were few and far between in the period that followed, but the match changed 10 minutes before the break when Perch was given his marching orders after picking up a second yellow for a late challenge on Matt Doherty.
Wolves made use of their one-man advantage in the second period as Edwards opened the scoring in the 60th minute after hammering a low Dominic Iorfa cross into the back of the net.
The away side then doubled their lead seven minutes later when Costa drove into the QPR box before finding the bottom corner with a low finish as Wolves moved closer to their first league success since the end of September.
QPR did have one back in the final minute through Joel Lynch, but it proved to be too little too late for the home side as Wolves held on in the seven minutes of added time to secure three much-needed points.