There was a cruel double blow late on for Norwich City at Carrow Road this afternoon, as Cardiff snatched a 2-0 victory after a hard-fought contest, to reignite their automatic promotion hopes.

Late goals from substitute Kenneth Zohore and star man Junior Hoilett, thumping home in style, moved Neil Warnock's team back up to second place in the Championship table.

City boss Daniel Farke made five changes to his starting XI, resting captain Ivo Pinto after a busy period despite scoring a late equaliser at Sunderland in midweek, with Harrison Reed moving to right-back and Alex Tettey returning in midfield.

Timm Klose and Jamal Lewis returned in place of Christoph Zimmermann and James Husband in defence. Moritz Leitner was back after a month out with a hamstring issue to partner Tettey in midfield, with Wes Hoolahan dropping to the bench, while Dennis Srbeny started up front in place of Nelson Oliveira.

Reed made a vital interception in the 21st minute to stop Junior Hoilett slotting home from close range after fine work from Nathaniel Mendez-Laing on the right.

The hosts just about had the better of a first half that saw referee Tim Robinson – who awarded Hull a bizarre penalty during City's 4-3 away loss last month – booed loudly for his lack of action against a succession of Cardiff fouls.

Craig Bryson had looped an early shot over and saw his low shot saved by Angus Gunn in the 24th minute after collecting a weak headed clearance from Timm Klose.

Srbeny flicked against the post in the 33rd minute after a quick corner from Leitner, beating keeper Neil Etheridge to the ball but unable to squeeze home from close range.

Josh Murphy had seen a shot brilliantly blocked by Sol Bamba in the early stages and the defender limped off in the 34th minute shortly after a similar denial of Srbeny.

Murphy thumped a long-range effort just wide from 25 yards after being set free by James Maddison in the 38th minute as the hosts began to build up a head of steam.

But it was captain Sean Morrison next to deny the Canaries, after tenacious play from Moritz Leitner allowed Srbeny to shoot from close range, only to be denied by the big defender's sprawling tackle.

Three minutes into the second half substitute Bruno Manga brought Reed down in the Cardiff box after a fine pass from Vrancic but penalty call from the crowd were ignored.

Manga flicked a header wide in the 52nd minute after Hoilett had whipped in a fine free-kick and soon after Mendez-Laing broke clear, only to be held up well by Lewis and fire weakly into the side-netting.

Maddison curled over from 25 yards after linking well with Murphy on the counter in the 56th minute but both teams began to cancel each other out and tire.

Josh Murphy fired a low effort which Etheridge held well in the 74th minute as the Canaries continued to press, with Maddison and Leitner pulling the strings but unable to force the issue.

Hoilett broke clear on the left with 12 minutes remaining but Zohore turned just wide at the near post under pressure from Klose, with the away fans thinking they had scored for a split second.

Reed went down injured and was replaced by Pinto in the 80th minute, with Oliveira coming on for Srbeny up front at the same time and Wes Hoolahan replacing Leitner five minutes later, soon after Bryson had seen a shot deflected wide for the Bluebirds.

However, there was to be late heartbreak for Norwich, with Morrison's header backwards flicked on by substitute Zohore to force a good save from Gunn, only for the striker to get up and somehow squeeze a shot past City's keeper at his near post in the 87th minute.

It was harsh on the Canaries as the Welsh side kept alive their automatic promotion hopes against a weary looking home team.

The icing on the cake was then added in the final minute of injury-time, with Hoilett lashing home a fabulous shot from the edge of the box to make sure of the three points.

The Canaries return to action next Saturday with a trip to Preston North End for a reunion with former manager Alex Neil.

Norwich: Gunn; Reed (Pinto 80), Hanley, Klose, Lewis; Tettey (C), Leitner (Hoolahan 85); Vrancic, Maddison, Murphy; Srbeny (Oliveira 80). Unused subs: McGovern (GK), Zimmermann, Raggett, Husband

Booked: Murphy (foul on Paterson, 90+3)

Cardiff: Etheridge; Bennett, Morrison (C), Bamba (Manga 34), Peltier; Gunnarsson, Bryson; Mendez-Laing, Damour (Paterson 46), Hoilett; Madine (Zohore 73). Unused subs: Murphy (GK), Ward, Pilkington, Grujic

Booked: Damour (dissent, 44), Peltier (foul on Murphy, 66)

Goals: Zohore (87)

Referee: Tim Robinson (West Sussex)

Attendance: 25,503

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