Last updated on .From the section Scottish Premiership

Rangers swept aside St Johnstone to narrow the gap on Premiership leaders Celtic to six points.

The visitors were three goals ahead by half-time, with James Tavernier opening the scoring from the spot after Alan Mannus fouled Alfredo Morelos.

Josh Windass and Sean Goss struck again before the interval, with Morelos notching the fourth after the break.

St Johnstone managed a consolation effort when Jason Kerr headed in Liam Craig's corner kick.

The win was Rangers' fifth straight victory, with their next league game coming at Ibrox against the defending champions Celtic.

Josh Windass scored Rangers' second goal after good build-up play by Greg Docherty

The visitors took command of the game at McDiarmid Park with a casual assertiveness. A simple ball over the top of the St Johnstone defence was enough to create alarm, and as Morelos pulled away from home defender Aaron Comrie, Mannus rushed from his goal and toppled the Rangers striker.

Mannus was booked, Tavernier converted from the spot, and St Johnstone reeled. The game had, until then, only been marked by moments of personal distress for St Johnstone midfielder Murray Davidson, who was hurt in one incident by his own team-mate then suffered a clash of heads with Windass.

Both recovered, and the latter's play was unruffled. He has been in prolific form this season, ghosting into threatening areas from a role just behind the main striker.

Rangers midfielder Sean Goss swept in his side's third goal from a free-kick

His goal on this occasion - his 10th in seven games - was familiar in its movement and its execution. The powerful, dynamic figure of Greg Docherty created it, playing a one-two with Daniel Candeias before stabbing a ball through the home defence for Windass, who struck it first time with confidence and deftness past Mannus.

The ease with which Rangers breached the St Johnstone defence would have enraged the Perth side's manager Tommy Wright. St Johnstone's only attacking foray in the opening half came when George Williams struck an effort on target that Rangers goalkeeper Wes Foderingham pushed over.

It was a fleeting intervention, though. As Rangers probed forward again, Jamie Murphy gathered possession and surged towards a gap in the home rearguard. Davidson slid in to tackle, but referee Steven McLean judged that the midfielder caught Murphy before the ball, and awarded a free-kick.

Rangers' Alfredo Morelos is the Premiership's leading scorer after a deft header against St Johnstone

Windass had a hand in the execution, persuading Tavernier that it was perfectly situated for a left-footed player, and Goss stepped up to sweep the ball into the corner of the net.

The home side showed some spirit after the break, but Kerr headed wide at the end of a short period of pressure. It might have been a reminder to Rangers to not let their momentum slip.

Goss continued to be an elegantly effective figure in midfield, and one volleyed pass into the path of Windass sent Rangers on a counter-attack, but the forward's ball infield towards Morelos travelled too close to Mannus, who grabbed it in relief.

Rangers' winger Jamie Murphy hobbled off after suffering a foot injury

Morelos wasn't to be denied, though, and moments later he artfully guided Tavernier's cross through Mannus's arms from a tight angle. The goal moved him clear of Kris Boyd as the Premiership's leading scorer.

If Wright could take any solace from the game, it was in the refusal of his players to succumb to disillusionment. Substitute David Wotherspoon drew a save from Foderingham, before Kerr found the target with a powerful header from Liam Craig's corner.

The game began to peter out, although there was a setback for the visitors when Murphy had to be replaced after suffering what appeared to be a toe injury. He was replaced by the centre-back Bruno Alves, but the outcome, by then, was already established.