They left it late, but Glory deservedly took all three points against Adelaide United in an entertaining affair, with Andy Keogh's headed winner in the 80th minute enough to split the sides in front of a crowd of 11,049 at nib Stadium.
The hosts started the match in fine fettle, with Keogh winning a penalty after a foul from Michael Marrone just four minutes in.
Diego Castro stepped up to the spot, but was unable to convert as Paul Izzo saved superbly, low to his left.
Perth came agonisingly close again moments later, with skipper Keogh rocketing a close-range strike on target, but straight at the Adelaide 'keeper.
It was a frenetic and open-ended first half, with both sides enjoying spells of possession and creating a handful of chances, notably Adam Taggart's shot from ten yards 11 minutes in, but neither were able to break the deadlock before the break.
It was a much more reserved start to the second 45, with the respective defences holding firm. But that all changed late on as Glory pushed hard for a winner.
Taggart had a golden chance to open the scoring from Alex Grant's superb diagonal through-ball, however, Izzo reacted swiftly to tip the striker's half-volley just over the crossbar.
Adelaide had their own chance to take the lead on 73 minutes, with Nikola Mileusnic getting on the end of George Blackwood's dangerous ball across the box, but the midfielder skewed his shot wide of Liam Reddy's goal.
Kenny Lowe looked to the bench to inspire a late push for Perth, with Mitch Mallia entering the fray and the change paid dividends almost immediately.
After a surging run into the area, the former Sydney FC man delivered a perfectly-weighted cross to Keogh which the Irishman headed home expertly in front of The Shed.
Some gutsy defending from Shane Lowry and Xavi Torres late on kept the Reds at bay and ensured that Glory would climb, at least temporarily, into the top four.
Perth Glory 1 (Keogh 80') Adelaide United 0
33. Liam REDDY (GK), 2. Alex Grant, 4. Shane LOWRY, 6. Mitch Nichols (15. Brandon WILSON 77'), 8. Xavi TORRES, 9. Andy KEOGH (C), 14. Chris HAROLD (11. Mitch MALLIA 71'), 17. Diego CASTRO, 18. Andreu GUERAO, 22. Adam TAGGART, 23. Scott NEVILLE
Substitutes not used: 13. Nick FEELY (GK), 20. Jake BRIMMER, 29. Jeremy WALKER
Yellow cards: NICHOLS 58', KEOGH 83', LOWRY 90+2'
Red cards: Nil
20. Paul IZZO, 2. Michael MARRONE, 4. Benjamin WARLAND, 8. ISAIAS, 10. Karim MATMOUR (12. Mark OCHIENG 58'), 14. George BLACKWOOD (7, Ryan KITTO 68'), 16. Nathan KONSTANDOPLOUS (25. Apostolos STAMATELOPOULOS 83'), 17. Nikola MILEUSNIC, 19. Ben GARUCCIO, 23. Jordan ELSEY, 37. Daniel ADLUNG
Substitutes not used: 1. Daniel MARGUSH (GK), 24. Jordan O'DOHERTY
Yellow cards: Nil
Red cards: Nil