Showing great fortitude in the face of a daunting challenge, Vijay played a typically gritty innings of 126 in 301 balls, while one-down batsman Pujara compiled a more aggressive 124 in 206 balls.
The duo forged a huge second-wicket stand of 209 to help India give an apt reply to England's massive first innings score of 537.
England fought back late in the day by dismissing the well-set Vijay, who hit 9 fours and 4 sixes in his marathon 485-minute innings, and night watchman Amit Mishra (0) in the space of four balls.
The post-tea dismissals of the well-entrenched Pujara and Vijay, five minutes before close, and then Mishra off the last ball, has given big hopes to the visitors to apply pressure on the hosts tomorrow.
Also Read
Pujara was out chasing a wide ball from Ben Stokes while Vijay and Mishra were dismissed by Adil Rashid and Zafar Ansari respectively.
But unless India suffer a dramatic collapse, the game looks headed for a tame draw.
Vijay, on the other hand, was not averse to playing the second fiddle to Pujara. The duo had previously compiled five three-figure stands, including a mammoth 370 against Australia in the Hyderabad Test three years ago. Today's stand was also their second in excess of 200.
Vijay also carried on bravely after taking a nasty knock on his knee from Chris Woakes after completing his hundred.
(REOPENS DEL 39)
Shakib, who was instrumental in stemming the first session rot, went on the counter smashing his way to 82 off only 103 balls before his indiscretion landed the visitors in trouble.
Once Shakib was dismissed, the visitors quickly lost another wicket with Shabbir (16) being trapped leg before by Jadeja.
Well set and looking good for a century, Shakib couldn't properly connect a lofted shot after giving Ashwin the charge with Umesh Yadav gleefully accepting the easiest of catches at mid-on.
Bangladesh dressing room would have felt good about the session as both the senior players looked comfortable hitting some good shots but Shakib's dismissal robbed them of claiming a session which could rightfully have been theirs.
Shakib's shot selection has been a talking point despite his immense abilities as an all-rounder. Some of the imperious cover drives off Bhuvneshwar Kumar and Yadav were a treat for the eyes. He also attacked Jadeja slogging him to the cow corner.
Earlier Yadav (2/61 in 15 overs) rattled Bangladesh batsmen with pace while Ishant Sharma got some reverse swing going his way as the visitors were left losing three wickets in the pre-lunch session.
The first session of the third day certainly belonged to Umesh, who worked up good pace for a consistent period of time.
The only batsman who had looked comfortable was Tamim Iqbal (25) and he was unfortunately run-out after a horrible mix-up with Mominul Haque (12). The miscommunication while going for the second run became Tamim's undoing as he could add only a run to his overnight score.
After Umesh bowled a three overs from the pavilion end (Shivlal Yadav End), Kohli clevery switched him to the far end (VVS Laxman) end from which he bowled another six overs at a stretch.
He continuous troubled both Mominul and Mahmudullah for a considerable period of time with his outswingers. After bowling a number of outswingers, he got one to comeback sharply into Mahmudullah, which trapped him in-front. India went for a DRS but it was an umpires' call despite the delivery grazing the leg stump.
Fuller delivery that came in after pitching. The umpire promptly adjudged leg before and the batsman didn't even take a review.
It was a testimony to Umesh's stamina that his pace never dropped during the nine overs that he bowled in the morning.
Mahmudullah and Shakib then added 45 runs during which they played a few drives and also got their share of streaky boundaries in between.
But right-hander Mahmudullah was never in control during his stay.
Once Kohli decided to rest Umesh and Jadeja, he introduced Ishant and Ashwin from either ends.
Mahmudullah, who looked like a walking wicket, got one that darted in sharply with hint of reverse as Mahmudullah was beaten. The umpire adjudged the batsman leg before and he went for a review which didn't work in his favour.
India however lost their second DRS when Ashwin had got one to straighten enough beating Shakib's bat but it was ruled not out.