Norwich City showed their fighting spirit yet again to draw 2-2 at Bristol City and stretch their unbeaten run to 10 games – but it wasn't enough to climb back above Leeds at the top of the table.

Leeds had won 1-0 at Bolton ahead of the 5.30pm televised kick-off but City ensured they were five points clear of West Brom in third place by fighting back from 2-1 down at Ashton Gate.

Marco Stiepermann had put Norwich in front but goals from Famara Diedhiou and Callum O'Dowda either side of the break fired Bristol in front, only for Max Aarons to salvage a point with his second headed goal in three games.

The draw ensured the Canaries went unbeaten for 10 league games for the first time in six years, since a fine run during Chris Hughton's time in charge in the Premier League, during the 2012-13 season.

Ben Godfrey continued in central defence alongside Christoph Zimmermann, with Timm Klose still out with a knee problem, but Grant Hanley did return to the bench after three months out – despite a fresh eye injury picked up in training during the week.

That meant the Canaries were unchanged from the previous weekend's 3-2 home win over Bolton, a 12th win in 15 games.

Goalkeeper Tim Krul was the crucial man for the Canaries for much of the first half though, doing well to hold a shot from Diedhiou that had deflected off Zimmermann in the 20th minute

Norwich looked dangerous on the counter-attack, with Pukki going clean through in the 25th minute but seeing his low shot saved by Finland team-mate Niki Maenpaa, but their defence was kept busy throughout the first half and needed a fine double save from Krul in the 32nd minute.

The Dutchman tipped a rising Jamie Paterson shot over his crossbar to start with and then the resulting corner was pulled back to Josh Brownhill 30 yards out, with Krul at full stretch to push the midfielder's shot behind.

Norwich did claim the lead though after a nice drop of the shoulder from Zimmermann and a long ball which played Pukki in behind the Robins' defence, where the Finn teed up Stiepermann to allow the German to curl a fine left-footed effort around Maenpaa and into the bottom-left corner.

It was a fourth goal of the campaign for Stiepermann but the lead didn't last long at Ashton Gate.

Alex Tettey lost possession poorly in his own half in the 45th minute and Paterson's pass was kept alive by tidy play from Andreas Weimann, teeing up Diedhiou to thump a low shot from 15 yards which deflected off Zimmermann and beyond Krul's gloves.

There was a chance to reclaim the lead within four minutes of the restart when Emi Buendia nodded the ball down to Pukki on the edge of the box, only for Maenpaa to get down well and hold the low shot.

Instead it was Bristol going in front three minutes later, after Tettey had narrowly avoided a second yellow card for bundling over Brownhill on the break.

Home skipper Marlon Pack seized on a loose ball in midfield and played O'Dowda into the left channel, where the winger had enough pace to beat Zimmermann and squeeze a shot in off the underside of the bar.

Bristol were full of confidence all of a sudden and two low crosses from the right from Weimann caused problems, before Brownhill had another corner pulled back to him to shoot from distance and this time found the roof of the net with a spectacular effort that had Krul scrambling.

Canaries captain Hanley brought an end to his three-month injury absence on the hour, replacing Zimmermann, who seemed to have hurt himself when stretching to try and prevent O'Dowda's goal in vain.

The visitors steadied themselves and were wasteful twice in quick succession around the 70th minute, Mario Vrancic playing in Pukki and then Tettey chipping Vrancic behind the Bristol defence, only for the midfielder to take a wild swing and not connect with the shot.

Tettey again pushed his luck when bringing down Diedhiou with a challenge, before Daniel Farke made a double substitution in the 77th minute, bringing Jordan Rhodes and Onel Hernandez on for Todd Cantwell and Tettey and switching to a 3-5-2 formation.

It paid off immediately. Hernandez left Diedhiou on his backside and arrowed a cross over, where Aarons in his new position on the left was waiting to nod in at the back post at the away end in the 78th minute.

It was a second headed goal in three games from the 18-year-old and he made the most of the celebrations with around 1,400 travelling supporters after the equaliser.

The Canaries thought they'd reclaimed the lead for a second, after Godfrey had flicked on a Buendia free-kick from the left and Rhodes flicked past the stranded keeper – only for an offside flag to cut short the 84th-minute celebrations.

It was all Norwich in the closing stages but the closest they came was when Hanley pushed into the box in the third minute of injury-time but saw him shot held by Maenpaa.

The Canaries return to action next Saturday with another long away trip, heading to Lancashire to take on Blackburn Rovers.

Norwich: Krul; Aarons, Zimmermann (Hanley 60), Godfrey, Lewis; Tettey (C – Rhodes 77), Vrancic; Buendia, Stiepermann, Cantwell (Hernandez 77); Pukki. Unused subs: McGovern (GK), Marshall, Leitner, Srbeny

Goals: Stiepermann (39), Aarons (78)

Booked: Tettey (foul on O'Dowda, 41), Buendia (dissent, 71), Godfrey (foul on O'Dowda, 82)

Bristol City: Maenpaa; Pisano, Kalas, Baker, Kelly; Brownhill, Pack (C); Weimann (Watkins 82), Paterson, O'Dowda; Diedhiou. Unused subs: O'Leary (GK), Wright, Eliasson, Morrell, Hunt, Eisa

Goals: Diedhiou (45), O'Dowda (52)

Booked: Watkins (foul on Buendia, 83)

Referee: Roger East

Attendance: 19,851 (1,395 away)

• Follow all the post-match reaction and analysis in our Matchday Live blog at pinkun.com/live