After a string of missed chances from both sides, Mathare United went ahead in the 32nd minute through Cliff Nyakeya, who fired home with a low shot after being set up by James Kinyanjui.
The lead lasted for just five minutes as Zoo equalised from the penalty spot through keeper Martin Elungat, after Dennis Kawanga was brought down in the area.
James Situma thought he had given Mathare United the lead moments later, but his goal was chucked off by the offside flag. The first half ended even.
Things got harder for Zoo in the 48th minute when Danson Chetambe was dismissed for a second yellow cardand immediately Mathare United took charge of the match.
Their efforts paid off in the 62nd minute when Clifford Alwanga nodded home from a Nyakeya cross. Nyakeya then got his second of the game in the 76th minute with a tap-in in from close range.
Mathare United had numerous chances to increase their tally but they wasted them and in the end settled for a 3-1 win.