England's Joe Root celebrates after scoring a half-century (50 runs) during the second day of the second Test cricket match between Bangladesh and England at the Sher-e-Bangla National Cricket Stadium in Dhaka on October 29, 2016. /DIBYANGSHU SARKAR/AFP/Getty Images)

With a century from Joe Root and an unbeaten 99 from Moeen Ali that will see him sleep uneasy, England have looked the goods on the opening day of the first Test at Rajkot.

Root's impressive 124 was the first century by a foreign player in India since 2013, and it could have been more if not for a somewhat controversial decision.

Root and Ali combined for a strong 179-run partnership after the visitors looked a little shaky at 3/102, but Root's dismissal would have had some England fans scratching their heads.

Root was dismissed caught and bowled by Umesh Yadav, although Yadav celebrates quite quickly - some would say too quickly - and puts the ball down withing a couple of seconds of the initial contact.

Both umpires were reluctant to given Root out on the field, so they sent the call up to the third umpire with the on-field call as out, and there wasn't enough to overturn the decision as Root was gone.

Ali is set to join the 25-year-old in scoring a first innings century, and he's only one run away from his fourth Test ton.

Ben Stokes will resume alongside Ali on 19, after England avoided a potential banana skin with their big fourth-wicket partnership.

It could have been worse for England had the hosts taken their chances, as both Alistair Cook (0) and debutant Haseeb Hameed (13) were dropped early on.

Ravi Ashwin took the wickets of Hameed and Ben Duckett on the way to figures of 2-108, with Yadav and Ravindra Jadeja taking the other scalps.

Ali will resume on 99* with his side at 4-311 when play gets back underway on day two at 3pm AEDT today.