Resuming the day at 71 for 1, India added 271 runs from 90 overs to end the third day on 342 for 5 in reply to Australia's mammoth 572 for 7 declared, thanks to the twin centuries by Kohli (140 not out) and Rahul (110).
Kohli notched up his tenth Test ton in his 33rd match and also broke a few records during the course of his unbeaten knock.
At stumps, Kohli and Wriddhiman Saha (14 not out) at the crease, the duo having added 50 runs for the sixth wicket.
For Australia, Mitchell Starc (2/77), Shane Watson (2/42) and Nathan Lyon (1/91) were the wicket-takers. Ryan Harris (0/63), Josh Hazlewood (0/45) and Steve Smith (0/17) were the other bowlers used.
The visitors were, however, jolted by two dismissals in two deliveries in last hour of play. Ajinkya Rahane (13), who hit a century in the third Test in Melbourne, and Suresh Raina (0) were dismissed by Shane Watson in two consecutive deliveries in the 100th over of the Indian innings.
With his 214-ball unbeaten knock, spiced with 20 boundaries, Kohli became the only cricketer ever to have scored a century each in his first three innings as captain of a side. Australian Greg Chappell had scored a century each in his first two innings as captain against the West Indies at Brisbane in 1975.
The 26-year-old Kohli also became the highest Indian run getter in a Test series in Australia, surpassing batting legend Rahul Dravid who scored 619 runs from eight innings in the 2003-04 tour.
The only blemish of the Indian captain in his innings today was the dropped catch by Steven Smith at second slips in the post-lunch session when Kohli was on 59.
The 22-year-old Rahul, in only his second Test, played a solid innings though he survived two close calls, including a dropped catch by Smith of the bowling of off-spinner Nathan Lyon in the morning session when he was on 46.
