Luke Dorn scored two second-half tries as Castleford fought back to beat Widnes and move third in Super League.
Converted Kevin Brown and Stefan Marsh scores put the visitors 12-10 up at half-time, with Michael Shenton and Jake Webster scoring for the Tigers.
Scott Wheeldon grabbed the first of four unanswered tries to put Cas back in front, with Dorn crossing for a brace and Daryl Clark also going over.
Cameron Phelps and Tom Gilmore crossed, but they were merely consolations.
The lead changed four times in a remarkable opening half, with the Tigers striking first after Cas captain Shenton pounced on a Marc Sneyd kick.
Widnes stand-off Brown marked his 250th career appearance with a try under the posts, and Danny Tickle added the extras to put them ahead for the first time.
There was a hint of a knock-on from Dorn in the build-up to Webster's try as Cas reclaimed the lead, but the Vikings went into the break ahead after Marsh finished off another team move.
The second-half started with Jack Owens fumbling possession under his own posts, allowing Wheeldon to picked up the loose ball before crashing over for the Tigers.
Widnes's Paddy Flynn and Castleford's Justin Carney were then sent to the sin-bin for their part in a brawl, as both wingers traded blows.
The hosts reacted better, as Dorn danced his way over just two minutes later.
They added to their lead from the resulting kick-off, Shenton breaking away down the left channel with Dorn in support to cross for his second try in as many minutes.
The Tigers stubbornly held Widnes at bay before hooker Clark scampered his way under the posts to make it 34-12.
Phelps touched down five minutes from time to give Widnes the faintest of hopes, and despite Gilmore then grabbing his side's fourth a minute later it proved too late.
Castleford coach Daryl Powell:
"I thought we could have done it a little bit better in the period where we both had 12 men.
"It was a tough game and there wasn't much in it. We were in a real battle at half-time and I thought they played a little bit better than us in the first period.
"We held tough and I thought we were a little bit unlucky in the first 15 minutes. We pretty much had control in the second period until they hit us with the two consolation scores.
"I thought they were a little bit smarter than us in some areas, but our forwards gave us a real lift, especially off the bench.
"Luke Dorn was pretty sharp. In the second-half he came up with some really smart pieces of play, and he made a real difference for us.
"He's been out over the last six weeks, but he's in front of Jordan Tansey in some areas at this moment in time."
Widnes head coach Denis Betts:
"It was the fight really that changed the game.
"Jack Owens makes an error and they swoop on it. The game was really close, and they just handled their emotions a little bit better after the melee.
"We just got emotionally involved in trying to get some retribution in some sort of way. And a couple of smart plays from them and they've got their tails up.
"They're on their home ground and they're a tough side to beat when they get in front.
"We came here with a real purpose in that first-half and I thought we did everything right. We rode their storm and survived in our own half, but ultimately we were outdone.
"I don't think the scoreboard is a fair reflection of the game and where the two teams are."
Castleford: Dorn; Dixon, Webster, Shenton, Carney; Sneyd, Finn; Lynch, Clark, Huby, Holmes, Hauraki, Millington.
Replacements: Mariano, Wheeldon, Ellis, Jewitt.
Widnes: Hanbury; Owens, Marsh, Phelps, Flynn; Brown, Gilmore; Clough, White, Gerrard, Allen, Tickle, Leuluai.
Replacements: Gore, Isa, Johnson, Kavanagh.
Referee: Ben Thaler (RFL).