(CNN) -- India racked up a massive first-innings lead of 347 runs over South Africa on the third day of the second cricket Test in Kolkata as V.V.S. Laxman and captain Mahendra Singh Dhoni contributed centuries.
The pair put on an unbroken 259 for the seventh wicket, with Laxman unbeaten on 143 and Dhoni on 132 when the declaration came at 643-6 in the final hour of Tuesday's play.
Their efforts meant that four Indians had passed three figures, following Virender Sehwag's 165 on Monday and Sachin Tendulkar's 106, while four South African bowlers conceded more than 100 runs each.
South Africa, who will return to the No. 1 Test ranking above India with a draw, reached 6-0 at stumps as only five balls of a scheduled 10 overs were able to be bowled due to bad light.
India, who trail 1-0 in the two-match series, resumed the day on 342-5 with Laxman on nine and nightwatchman Amit Mishra on one.
They extended their partnership to 48 before paceman Morne Morkel picked up his second wicket as Mishra was caught at second slip by Jacques Kallis, who had earlier dropped the batsman as did captain Graeme Smith.
Laxman was dropped by J.P. Duminy on 48, and India reached lunch at 431-6 before piling on 117 runs in the two hours after the interval.
Laxman completed his 15th Test century and Dhoni his fourth in only the second time that four Indian batsmen had reached three figures in the same innings.
Martin Guptill (189) and Brendon McCullum (185) extended their sixth-wicket partnership to a national record of 339.
Guptill scored his maiden Test ton while wicketkeeper McCullum celebrated his 50th appearance in the five-day game with his highest score.
Seamer Rubel Hossain took both of their scalps in the middle session and ended with his first five-wicket bag, conceding 166 runs.
Bangladesh reached 87-1 at stumps in their first innings, with opener Tamim Iqbal unbeaten on 56 after facing just 48 balls.
He put on 79 for the first wicket with Imrul Kayes, who made 28 before edging spinner Daniel Vettori to Ross Taylor at slip.