Swansea City picked up a point as the 109th South Wales derby finished goalless on an afternoon where both sides hit the woodwork in a hard-fought encounter.
The Swans had been chasing the first league double in the 108-year history of the fixture, and the closest they came to breaking the deadlock was Bersant Celina’s curling first-half strike that cannoned out off the post.
The hosts hit the bar after the break as substitute Callum Paterson failed to get his header on target in the closing stages of the contest.
The result means Steve Coper’s side end the weekend seventh in the table, level on points with the final play-off spot.
Cooper handed loan signing Rhian Brewster a debut as one of three changes from the win over Charlton, while Ben Wilmot – matchwinner at the Liberty in October – and Celina also came into the side.
The Swans started brightly, debutant Brewster and Celina combining to free Wayne Routledge, but the winger was brought back for offside as Alex Smithies smothered his shot.
Robert Glatzel headed wide from a Sean Morrison cross a few moments later as the game started at a predictably frantic pace.
But it was the visitors who had the better of the early going, with Celina in particular having joy finding pockets of space in front of the Cardiff back four.
Routledge spurned a big chance eight minutes in, volleying over after a poor Curtis Nelson header had fallen to him eight yards out.
Freddie Woodman parried a Glatzel header around the post from a Marlon Pack free-kick, and the keeper then held Nelson’s header after Joe Bennett had got clear down the left.
Ben Cabango then made an excellent clearance to deny Glatzel a tap-in as the hosts enjoyed a good spell.
The Swans responded, clever movement from Routledge and a lovely pass from George Byers seeing the winger get away a shot that was blocked.
Celina then fizzed an effort just wide of the far post, before being denied by the woodwork from a rapid counter that had the hosts scrambling.
Inevitably it was also a niggly affair, with a number of fouls disrupting the flow of the contest and there was little in the way of genuine goalmouth action over the closing stages of the opening half.
The second half started in similar fashion, with no real flow to proceedings and little in the way of quality.
The hour mark came and went with only an off-target effort from Lee Tomlin being worthy of note.
Brewster produced a lovely turn to work some room on the edge of the area, but dragged well wide of goal.
The 19-year-old fired wide with his right foot after good work by Celina and Andre Ayew.
Lovely trickery from Celina then forced a diving Morrison to head just wide of his own goal as the game entered its nervy final stages.
Cardiff had the best chance yet when substitutes Josh Murphy and Paterson combined, with the latter heading the former’s cross against the bar with Woodman beaten.
Ayew then fired straight at Alex Smithies as Swansea countered from a Wilmot clearance but there was to be no winner.
Swansea City: Freddie Woodman; Connor Roberts, Ben Cabango, Ben Wilmot, Kyle Naughton; George Byers, Matt Grimes (captain); Andre Ayew, Bersant Celina, Wayne Routledge; Rhian Brewster.
Substitutes (not used): Kristoffer Nordfeldt, Marc Guehi, Jake Bidwell, Jay Fulton, Yan Dhanda, Aldo Kalulu, Borja Baston.
Cardiff City: Alex Smithies, Lee Peltier, Sean Morrison (captain), Curtis Nelson, Joe Bennett, Leandro Bacuna, Marlon Pack, Gavin Whyte (Josh Murphy 70), Lee Tomlin, Junior Hoilett; Robert Glatzel (Callum Paterson 70).
Substitutes (not used): Neil Etheridge, Aden Flint, Will Vaulks, Jazz Richards, Danny Ward.
Referee: Tony Harrington