Bengal scored 270 for eight and then restricted Madhya Pradesh to 256 in 49 overs, despite a fine century from Harpreet Singh.
Opting to bat, Bengal lost two early wickets before Chatterjee and Tiwary put on a crucial 127-run stand for the third wicket.
Chatterjee's innings came off 101 balls and was studded with eight boundaries and two sixes, while Tiwary scored a 73-ball 59 with the help of three fours.
Chasing 271 for victory, Madhya Pradesh managed to put on a couple of 50-plus partnerships but eventually fell short.
More From This Section
Harpreet hit 109 off 134 deliveries that included nine boundaries and a six. He also put on a 55-run stand for the third wicket with Shubham Sharma (17) and another 69-run partnership with Sohraab Dhaliwal (37) for the fifth wicket.
Sayan Ghosh (3/43) was the pick of the bowlers for Bengal.
Brief scores:
Bengal: 270 for 8 in 50 overs (Sudip Chatterjee 91, Manoj Tiwary 59; Venkatesh Iyer 2/38).
Summarised scores of other Group C matches:
1) Mumbai beat Andhra by 43 runs
Mumbai: 231 for 8 in 50 overs (Aditya Tare 77, Siddhesh Lad 55; P Girinath Reddy 3/53).
Andhra: 188 all out in 38.1 overs (KS Bharat 64; Shivam Dubey 3/21).
2) Rajasthan beat Goa by 7 wickets
Goa: 211 for 8 in 50.0 overs (PC Gawas 66; Nathu Singh 2/31).
Rajasthan: 214 for 3 in 40.2 overs (Mahipal Lomror 73, Salman Khan 61 not out).