The loss puts Heart level with the now defunct New Zealand Knights for most consecutive matches without a win as the streak extends now to 19.
The first half was tight, with few chances for either side as Melbourne Heart were able to hold their own against a Perth side coming in to some form.
Perth started the better side, but when Adrian Zahra suffered a head knock and had to go off the field, Perth were reduced to ten, temporarily, letting Heart in.
During that period Heart had their chances and nearly hit the lead as Patrick Gerhardt slid in, only to be denied by a sliding Danny Vukovic who was able to kick the ball clear.
It wasn't long before Heart had their next opportunity, coming through Nick Kalmar as his long range effort was saved by Vukovic.
Melbourne Heart continued to control proceedings and were inches away from taking the lead when Iain Ramsay's effort was denied by the cross bar.
Perth came out from the break determined to get control back and they really did a good job of taking charge of proceedings.
All that hard work from Perth paid off 20 minutes in to the second half when they got their goal as Zahra scored a stunner. Cutting in from the left, he was able to hit a powerful strike that left Andrew Redmayne with no chance and gave the hosts the lead.
Dylan Macallister came on as a substitute in the 68th minute and earned a yellow card in the 75th before being promptly shown a second in the 81st, ending his return from injury rather quickly and leaving Heart with an even bigger hole.
That allowed a Perth substitute to run away with the match with Shane Smeltz, also returning, scored his club's second goal as he beat his defender and hit a shot low and hard to mark his return.
Three minutes later Smeltz put the exclamation mark on his return as Redmayne palmed away Ryan Edwards' cross, only for it to fall to the New Zealand striker who powerfully struck it home to seal the 3-0 win.