Defensive mistakes cost Bengaluru dear and helped Mumbai's cause as Modou Sougou (13th) took advantage of Gurpreet Singh Sandhu's error to give his team the lead.
A poor header by Harmanjot Khabra back to his keeper allowed Amine Chermiti (55th) to score the second goal and put the result beyond doubt.
With 19 points after 13 games, Mumbai are fifth in the points table and only two points behind fourth-placed Odisha FC.
Bengaluru could have climbed to the top of the table with a win but the defeat has left them in second spot with 22 points.
The visitors put out an early warning when Ashique Kuruniyan decided to dribble inside from the right flank in the 11th minute. The winger beat a couple of defenders on his way towards the edge of the box but his final effort was blocked away for a corner.
Mumbai City had the better of the early exchanges and broke the deadlock two minutes later.
Bengaluru goalkeeper Gurpreet Singh Sandhu misjudged the flight of a long ball from Rowllin Borges towards the edge of the box. With the keeper off his line, Modou Sougou headed the ball into an empty net and gave Mumbai the lead.
While Bengaluru saw more of the ball after going behind, it was the hosts who continued to threaten. A Diego Carlos long-range strike had the Bengaluru defence in trouble again.
The shot was blocked and Sougou got to the loose ball but his weak shot from close-range was punched out by Gurpreet to deny Mumbai their second goal.
Sunil Chhetri thought he had equalised for Bengaluru when he beat Amridner Singh at the near post with a fierce shot but he was adjudged to have strayed offside in the buildup.
Bengaluru started the second half on the front foot but allowed Mumbai to double their lead from another individual blunder 10 minutes after the restart.
Borges' lob into the box was headed straight to Amine Chermiti by Harmanjot Khabra. The poor defensive header allowed the striker to take a touch and slot the ball past a hapless Gurpreet.
With chances drying up for the visitors in the final third, Carles Cuadrat made his third and final change, handing Deshorn Brown his ISL debut after the hour-mark. But even the Jamaican striker struggled to make an impact.
Mumbai City continued to be on top and contained the Bengaluru frontline to good effect. The defending champions were unable to create anything in and around the box and allowed Mumbai City to ease to a crucial victory at home.