Bengal were 47 without loss in 16 overs that they batted with openers Arindam Das and Rohan Banerjee batting on 19 and 23 respectively.
The visitors need 344 runs on the final day tomorrow in a minimum of 90 overs -- with all wickets intact -- for a win on Brabourne Stadium wicket which seems to have eased out.
Mumbai, who led Bengal by 96 runs in the first innings and started the day at 6 without loss, lost the wickets of Wasim Jaffer (19), Kaustubh Pawar (31) and skipper Rohit Sharma, who again flopped in the game by making 14, before the left-handed pair of Shah and Abhishek Nayar propped up the innings.
Shah, who notched up 108 in 209 balls with 16 hits to the fence before being dismissed by Shami Ahmed, and Nayar, who cracked his second half ton of the game while making 73 not out in 90 balls, had a century stand for the fourth wicket.
Having scored centuries in games against Rajasthan and Hyderabad, Shah was in blazing form and along with Nayar, who struck 5 fours and a six, put on 158 runs to help Mumbai apply the closure 40 minutes before the scheduled close of play.
The home team declared once Aditya Tare fell to a catch in the deep after making a quickfire 19 off 11 balls with three fours and a six.
But Bengal openers Das and Banerjee had no trouble in negotiating the Mumbai attack in fading light, and remained undefeated for resumption of the battle tomorrow.