And then Baroda had the hosts and 41-time champions on the ropes at 102 for 4, with Mumbai needing 302 runs more to avoid an embarrassing innings defeat in their landmark 500th Ranji game.
Overnight not out on 63 in a team score of 376 for four in reply to the hosts' meagre 171, Swapnil ground the hapless Mumbai attack relentlessly during a stay of five minutes under seven hours as Baroda reached 575 for 9 before applying the declaration at the Wankhede Stadium.
Mumbai, faced with the daunting task of preventing an outright defeat, had lost captain Aditya Tare for 5 earlier and then surrendered two more wickets in fading light before Ajinkya Rahane (28) and Suryakumar Yadav (2) prevented further loss.
Apart from Tare and Shaw, Mumbai had lost Shreyas Iyer (8) and the promoted Vijay Gohil (0) in an extended day's play to stare a massive defeat in the face going into the final day tomorrow.
More From This Section
His highest score, in 42 games before today, was 95 and he finally reached the three-figure landmark with a single off left arm spinner Vijay Gohil in 242 balls and 315 minutes.
Swapnil, in the company of the lower order, ensured that Baroda who lost two early wickets within half an hour in the morning, did not allow Mumbai even a whiff of a chance to come back in the game.
The two-down batsman was finally out, after hitting four sixes and ten fours, as he charged out to Dhawal Kulkarni with the third new ball in hand and was caught off the leading edge at deep point.
By then, Baroda had advanced to 463 and they declared soon afterwards to try and push for an outright victory.
Exciting new talent Shaw, who made a duck in the first innings, batted fluently to complete his second half century in 54 balls, studded with seven fours and a six, to add to his four tons in his sixth game.
Shaw looked in good touch when Swapnil bowled a dream ball to beat him all ends up and send him back with 12 overs left for stumps.
Then Iyer, out to a poor shot in the first essay, repeated his folly by trying to slog a short ball dug in by Sheth, the first innings destroyer, from outside the off and skied the ball to square leg to depart with stumps approaching.
Brief scores: Mumbai 171 and 102 for 4 (Prithvi Shaw 56, Ajinkya Rahane batting 28, Suryakumar Yadav batting 2). Baroda 575 for 9 decl. (Aditya Waghmode 138, Vishnu Solanki 54, Swapnil Singh 164, Sagar Mangalorkar 43; Dhawal Kulkarni 2 for 79, Shardul Thakur 3 for 95, Vijay Gohil 2 for 177).