Resuming at an overnight score of 78, Tiwary cracked 128 to guide Bengal to 419 in their first innings.
Profligate with the new ball initially, India pacer Mohammed Shami (2/74) got his sting back when the ball got old and ended Priyanshu Khanduri's 120-ball vigil at the crease for 52 runs.
In space of two balls, Ashoke Dinda (2/39) removed the in-form Nikhil Gangta for a cheap 24 before bad light stopped play at 39.3 overs with the group D leaders trailing by 256 runs.
Tiwary took 167 balls to get to the mark and found a fine support in Shreevats Goswami as the duo looked in control in their 64-run partnership till the latter was trapped by Pankaj Jaiswal (3/83).
More From This Section
Bengal innings folded just after the lunch break as Rishi Dhawan (4/86) and Jaiswal wipped the tail but not before they crossed the 400-mark with Mohammed Shami hitting a 22-ball 26 that included two fours and two sixes.
"I'm disappointed because I could not make it bigger. We had time in our hands," Tiwary said.
Bengal bowlers struggled to get any help from the wicket as Verma and Chopra added 92 runs for the second wicket before Mukesh Kumar gave the breakthrough dismissing the Himachal captain caught-behind.
Shami looked lacklustre and got his first wicket -- Paras Dogra (7) -- in the ninth over and conceded 74 runs in his 13 overs.
But Khanduri looked dogged in his approach and completed his fifty in 107 balls with a fine support from Gangta, fresh from his consecutive centuries against Services and Goa.
"They were in a comfortable position at one stage but bowlers did well to fight back. I'm really happy at getting five wickets at the end of the day. We are in a good position, the first aim is to secure three points then we will see how the match pans out," Tiwary said.
He further backed Shami and said: "He struggled initially with his rhythm but happy that they fought back. We hope to get early breakthroughs in the morning session tomorrow."
In Kolkata:
Bengal 419 in 121.3 overs (Abhishek Raman 176, Manoj Tiwary 123; Rishi Dhawan 4/86, Pankaj Jaiswal 3/83) vs Himachal Pradesh 163/5 in 39.3 overs (Sumeet Verma 64, Priyanshu Khanduri 52).
In Nagpur:
Vidarbha 385 in 124.5 overs (Faiz Fazal 136, Ganesh Satish 78, S R Ramaswamy 55) vs Services 141/4 in 53 overs (Rahul Singh 57 batting, Ravi Chauhan 44).
In Raipur:
Chhatisgarh 238.
Punjab 481/6 in 103 overs (Anmolpreet Singh 171 batting, Gurkeerat Singh 111, Jiwanjot Singh 75; Shourabh Kharwar 3/90).