The visitors led 2-1 at the break, with Jamie Paterson and Callum O'Dowda on target after McLean had got the Canaries back on level terms.
But Daniel Farke's side kept their composure and scored two in the opening quarter of the second half to seal a deserved win, with Ben Godrey getting the second equaliser and McLean firing in a tremendous second to settle it.
The visitors had most of the ball in the opening stages of what was a cracking game and it was no surprise when they took the lead after just 12 minutes.
A neat move through the middle ended with Famara Diedhiou picking out Paterson, who blasted the ball past Tim Krul from an acute angle to put the leaders on the back foot.
It was only after conceding that Norwich started playing and after piling on the pressure they should have been back on level terms midway through the half but top scorer Teemu Pukki somehow screwed the ball wide from close range after Onel Hernandez's miscue had fallen into his path.
After a brief lull the game exploded back into life with two goals in under a minute, with the Canaries levelling and then going behind again almost immediately.
Norwich's equaliser arrived on 36 minutes after a superb raking ball from Emi Buendia to Hernandez had caught the visitors short on their right.
The Cuban winger got to the byline before cutting the ball back to Pukki, who added another assist to his tally by laying it back for McLean to curl home his first goal for the club since his summer switch from Aberdeen.
The crowd were still celebrating that well-worked goal when the Robins got their noses back in front. Straight from the kick-off the ball was moved forward to O'Dowda, who danced past a couple of weak challenges before coolly slotting the ball past Krul from just inside the box.
Norwich laid siege to the opposition goal up to the break without seriously troubling keeper Frank Fielding but it was the visitors who started the second period on the front foot as Diedhou saw a fierce effort blocked.
The hosts were soon in the ascendancy again, however, and it took a good near-post save from Fielding to deny Max Aarons before Norwich evened things up again in the 55th minute.
There was an element of good fortune about the goal, with Hernandez's deflected shot turning into a good pass for Aarons, who sidefooted across the area for defender Godfrey – still up for a corner – to sidefoot home.
The visitors were still very much in it, with Krul having to produce a good full-length save to keep out Paterson's low shot which came at the end of a glorious move.
But Fielding was the busier of the two keepers and he made a world-class stop to keep out a spectacular close-range volley from Hernandez.
Norwich didn't have to wait long for their third. Another spell of concerted pressure ended with the ball falling to McLean some 25 yards out and the Scottish midfielder made ground towards the edge of the area, had a quick look up and then fired home a spectacular low right-footer into the bottom corner to make it 3-2 on 66 minutes.
Robins boss Lee Johnson made a triple substitution in an attempt to change the course of the game but the home side were now well on top and Fielding had to make another good stop to deny Hernandez from close range before Marco Stiepermann's thunderous drive came back off the crossbar.