Jonny Bairstow hit a sublime century on his England return before late wickets checked the tourists' progress on day one of the third Test against Sri Lanka in Colombo.

A fired-up Bairstow, batting at number three for the first time, made 110 off 186 balls in sweltering conditions to help England reach 235-3 after tea.

But Sri Lanka fought back to restrict them to 312-7 at the close.

England have an unassailable 2-0 lead in the three-Test series.

Bairstow, who missed the first Test through injury and was left out of the second when Ben Foakes was retained as wicketkeeper, became the first England number three to score a century since Joe Root against India in Rajkot in 2016.

His innings, allied to Ben Stokes' 57 and 46 from Root, gave England a chance to take control of the match on the best pitch of the series for batting, with the surface providing less sharp turn - albeit more bounce - than in Galle and Pallekele.

However, the hosts' rally, led by Lakshan Sandakan taking 4-91, has left the Test finely poised.

Have England stumbled on a solution at three?

Bairstow, 29, is the 10th player to bat at three for England since May 2015 and the only other besides captain Root to score a century in that time.

He played positively early on, sweeping the spinners to help guide his team out of potential trouble at 36-2 in a 100-run stand with Root, before accumulating with consummate ease and waiting for the bad ball.

Suffering from cramp on a blisteringly hot day, Bairstow brought up his sixth Test century off 165 balls with a paddle sweep, then ripped off his helmet, dropped his bat and let out a fearsome roar.

A single innings - even one as fine as this - is too little evidence to say whether Bairstow is the answer to England's problem position of number three in the longer term.

However, if he can continue in this vein, England will have stumbled on a solution more through luck than judgment.

Without the ankle injury suffered playing football in training that kept Bairstow out of the first Test, Foakes would not have played and made the wicketkeeper's position his own. And without Sam Curran's side strain, Bairstow may not have been recalled for this match.

Bairstow wants the gloves back, but this sequence of events could mean he evolves into a top-order batsman and end up working for team and player alike.

Sketchy Stokes battles through

In contrast to Bairstow, Stokes was scratchy at the crease but found a way to put on 99 with his more fluent partner.

Stokes should have been lbw without scoring when he was trapped on the pads playing back to Dilruwan Perera, but it was given not out on the field and Sri Lanka had no reviews left.

The all-rounder punished the hosts with five fours and two sixes to pass 50, although never truly settled before edging left-arm wrist-spinner Sandakan to first slip.

Root looked well set to follow his fine hundred in the previous match with at least a half-century. However, he fell into Sri Lanka's trap after a fielder was removed from the leg side, which tempted the England captain into a slog sweep that he top-edged to mid-wicket.

Opener Rory Burns started assuredly but was bowled by Dilruwan for 14 when he tried to cut a ball that was too close to him, before Keaton Jennings carelessly flicked Malinda Pushpakumara to leg slip for 13.

Poor reviews and drops cost Sri Lanka

Although Sri Lanka fought back admirably in the final session, they could have established a stronger position were it not for negligent use of the decision review system and some poor fielding.

The hosts lost both their reviews inside the first 22 overs, wicketkeeper Niroshan Dickwella's exuberant appeals wrongly convincing captain Suranga Lakmal to review an lbw shout against Root that struck him outside the line and a caught-behind chance off Bairstow that missed the edge.

Had they retained a review, Sri Lanka would have removed Stokes for a duck and potentially had Bairstow caught down the leg side for 79 - technology showed a slight noise as the ball passed the bat, although it was not clear whether an edge or his scraping foot caused it.

Bairstow also survived an lbw shout that would have been overturned on review shortly after reaching his ton, before he tried to heave Sandakan into the leg side and was bowled.

Jos Buttler made 16 before chipping back to Sandakan and Foakes was caught behind for 13 trying to cut a delivery that was too full.

Moeen Ali ended the day unbeaten on 23, but was was dropped on two by Dickwella and 17 by Dimuth Karunaratne and successfully overturned twice when given out lbw, including the final ball of the day before bad light stopped play.

Bairstow punishes Sri Lanka again - stats

Bairstow has scored three centuries in five innings against Sri Lanka at an average of 124.25.

For the first time since 1995, England have used six different batsmen at number three in a calendar year.

Burns has been out in four different ways in his past four innings - run out, caught, lbw and bowled.