Henri Lansbury's first goal for Norwich City, more than three minutes into stoppage time, gave them a dramatic Championship victory over Millwall at Carrow Road.

The Canaries looked set for another home draw when a touch from skipper Grant Holt set up Lansbury to fire the winner past goalkeeper David Forde.

Before that, defender Elliott Ward also scored his first goal for City to level the scores after they had trailed 1-0 for much of the second half.

Substitute Theo Robinson, on for injured top scorer Steve Morison, put the Lions ahead in the 56th minute by tucking home a cross from former Norwich loan winger James Henry.

City boss Paul Lambert made a triple substitution to try to galvanise his side but it took them until the 77th minute to level the scores.

Henri Lansbury's free-kick struck the post and Ward was on hand to score from the rebound.

It was Lansbury who delivered the winner, too, a neat twist after Millwall had scored a stoppage-time goal of their own when the two sides met at The Den in November.

The City side showed four changes from the team that started the 0-0 draw at Crystal Palace on Saturday.

There were recalls for Elliott Ward, Simon Lappin and Simeon Jackson with Zak Whitbread, Wes Hoolahan and Chris Martin relegated to the substitutes' bench.

And Marc Tierney made his first home appearance at left-back in place of Adam Drury, ruled out by a thigh injury.

Millwall forced the first corner in the third minute, Ruddy leaping like a salmon to gather Henry's kick.

Forde had to race out to prevent Jackson getting on the end of Lansbury's through-ball as City broke.

City forced a corner when Lansbury found Jackson and his cross pinballed across the penalty area.

City had a good chance in the ninth minute when Crofts crossed from the right, but Lappin sent a first-time shot over the top from a reasonable position.

As Millwall hit back, Morison volleyed narrowly over from more than 20 yards.

Forde almost got into trouble when he rushed out and his clearance was charged down by Jackson, but fell kindly for the keeper to tidy up.

Another centre from Crofts set up Lappin with a good shooting chance but his first-time effort, this time left-footed, again went high over the bar.

Crofts set up Jackson with the next opportunity and he got the better of Purse but his shot was saved by the legs of Forde.

With 15 minutes gone, Millwall leading scorer Morison hobbled off with an ankle injury and after a short delay, he was replaced by Robinson.

Midway through the half, Robinson very nearly opened the scoring when Barnett misjudged a header and the ball dropped for the substitute, whose perfect effort was dipping under the bar before Ruddy leapt to tip it over.

From the resulting corner, Ward was perilously close to scoring an own goal when he sliced his attempted clearance only just over the bar.

There was another half-chance for Millwall when Barron's inswinging corner reached Purse, but from an awkward angle, he fired high and wide.

Crofts earned his seventh yellow card of the season after 35 minutes for a late challenge on Abdou.

Two minutes before the break, Henry struck a long-range free-kick wide for Millwall.

• HALF-TIME: Norwich City 0, Millwall 0

There was controversy in the fourth minute of the second half when Jackson chased Holt's pass and went down on the byline as 'keeper Forde challenged. City appealed for a penalty but Jackson was shown the yellow card for diving – although he simply appeared to have slipped.

A collision between Lappin and Dunne left both men worse off, the City player holding his knee and the Millwall skipper briefly doubled up.

The Lions counter-attacked and Tierney made an important block from Henry's shot.

But in the 56th minute, City were caught cold by a counter-attack as Robinson gave Millwall the lead.

Trotter found Henry on the right and the former City loanee's cross was perfect for Robinson, arriving in the six-yard box, to knock home via a touch from Ruddy.

Lambert reacted by making a triple change, replacing Lappin, Jackson and Fox with McNamee, Wilbraham and Hoolahan.

Purse blocked a volley from Holt after some tricky footwork by Hoolahan as City tried to get on terms.

With 65 minutes gone, Henry almost made it 2-0 when good work by Barron set him up for a shot on the turn was deflected wide off Tierney.

A foul by Jack Smith on Holt earned him a booking in the 76th minute – and led to City's equaliser with Ward scoring his first for the club.

Lansbury curled the free-kick, from five yards against the area, against the foot of the post with Forde beaten and Ward sidefooted home from a tight angle to level the scores.

The minimum three minutes of stoppage time had already been played when Lansbury struck the winner for City.

Ward's long ball forward was nodded on by Wilbraham and Holt held it up superbly, just enough for Lansbury to arrive and poke the winner past Forde.

• RESULT: Norwich City 2, Millwall 1

• Norwich City: Ruddy; Russell Martin, Barnett, Ward, Tierney; Lansbury, Crofts, Fox, Lappin; Jackson, Holt.

Subs: Steer, Whitbread, Korey Smith, McNamee (for Lappin, 58), Hoolahan (for Fox, 58), Chris Martin, Wilbraham (for Jackson, 58).

• Millwall: Forde; Dunne, Purse, Mkanadawire, Jack Smith; Henry, Eastmond, Abdou, Barron; Trotter; Morison.

Subs: Mildenhall, Harris, Lisbie, Laird, Schofield (for Henry, 90), Marquis, Robinson (for Morison, 16).

• Referee: Pat Miller (Bedfordshire)

• Attendance: 24,571

• Goals: City: Ward (77), Lansbury (90). Millwall: Robinson (56)

• Bookings: City: Crofts (35), Jackson (49), Lansbury (90). Millwall: Jack Smith (76)