City was on a three-match winning run in the derby and had won the previous meetings this season 6-0 and 7-0, leaving them just two short of the competition record for goals against the same opponent in a single campaign.
However, it took until the 54th minute for City to find the breakthrough – Nicholas Ansell turning the ball into his own net following Naoki Tsubaki's cross from the right.
Victory striker Rudy Gestede fired over when given a good chance to level and a fine save from Tom Glover denied the former Aston Villa man four minutes later.
City thought it had settled the contest as the clock ticked towards 90 minutes, but a VAR review disallowed Anthony Lesiotis' tap-in for offside.
The home side continued to push for a leveller and it came in the fifth minute of injury time, substitute Lleyton Brooks firing a half-volley into the top-right corner after City failed to clear a corner.
Victory's cheers resounded around the empty stands of AAMI Park as the result means they are one point above Newcastle Jets at the foot of the table.
They will avoid the wooden spoon if the Jets are beaten in their final match with City, a game which was postponed last month due to lockdown restrictions in Melbourne.