Goalkeeper Oli Sail parried low drives from Brandon Wilson and Diego Castro and when Andy Keogh got the ball in the net, he was denied by the assistant referee's flag.
Wellington made their few chances count. With half an hour gone, Australian attacker Piscopo received the ball in centre circle and drove forward, before unleashing a fearsome right-footed drive from outside the penalty area and into the bottom corner of the net.
The Phoenix doubled their lead five minutes later. Perth lost possession in their defensive third, allowing Ulises Davila to feed a marauding James McGarry down Wellington's left.
His pinpoint first-time cross was met on the run by Ball who supplied a firm finish from six yards.
Predictably, Perth came out firing in the second half, but once again the pressure was soaked up by an organised, disciplined and at time ferocious Phoenix defence.
The energetic Waine scored a second goal in as many games on the hour mark, poking home from close range after clever build-up play from Ball. Shortly afterwards, Sail provided the heroics with a superb double save to keep his sheet clean.
Sail has seized his opportunity with both gloved hands and is entrenching himself as the number one goalkeeper at the club, ahead of All Whites number one Stefan Marinovic. He is now the owner of back-to-back clean sheets.
The excellent Piscopo had a couple of late chances to inflate the scoreline, before the final whistle brought understandable delight among Wellington's players and coaching staff.
The win moves the Phoenix up a place to tenth on the A-League ladder, and just two points outside the top six. They next visit the Western Sydney Wanderers on March 15.
Wellington Phoenix 3 (Piscopo 30, Ball 35, Waine 59)
Perth Glory 0