Sarfaraz, whose last five innings include a double ton and a triple ton, shared a 275-run stand with Aakarshit Gomel, who scored 122.
Captain Aditya Tare then anchored the tail to take Mumbai to 427 before the bowlers reduced Madhya Pradesh to 200/7.
Delhi scored 623 against Rajasthan, thanks to tons from Kunwar Bidhuri and Kshitiz Sharma and their 196-run stand for the seventh wicket. Rajasthan ended the second day at 115/4.
Bengal managed to dismiss Punjab for 151 after ending their first innings at 138. They then reached 199/9 at the end of the second day, thus building a lead of 186 runs.
Baroda also reduced Karnataka's advantage, after it totalled a paltry 80 in the first innings. Karnataka were dismissed for 233, with Soyeb Sopariya taking five wickets and Baroda building a lead of 60 runs with five wickets in hand at the end of the day.
Jaydev Unadkat took six wickets but Narayan Jagadeesan's 183 took Tamil Nadu to 424.
Saurashtra are 107/3 at the end of the day.
Jammu and Kashmir took a lead of 49 runs after dismissing Haryana for 291 while Himachal Pradesh fought back with Rishi Dhawan's fifer to dismiss Uttar Pradesh for 119. HP lead by 283 runs at the end of the day.
Gujarat continue to dominate Andhra Pradesh, taking a lead of 177 runs while Vidarbha trail Hyderabad by 30 runs with six wickets to spare.
Among the Plate group matches, Goa managed to beat Mizoram in a match that lasted just under two days. Goa raced to 490/4 on Day 1 before dismissing Mizoram twice on Day 2 and recorded a victory by an innings and 211 runs.
Manipur face an uphill battle in trying to avoid an innings defeat as they trail Chandigarh by 576 runs in their second innings. They were dismissed for just 63 in the first.
Pondicherry have taken a lead of 341 runs against Nagaland with three wickets in hand.