Bristol City 0-0 Cardiff City
The Cardiff defence held tight
(Cardiff win 1-0 on aggregate)
Cardiff held on to book their place in the Division Two play-off final after a fine defensive performance at Ashton Gate.
The Bluebirds had keeper Neil Alexander to thank for a series of fine saves to deny the home side and secure their place against the winners of Wednesday's other semi between Oldham and QPR at the Millennium Stadium.
The home side went into the game knowing full well they needed to attack while also keeping it tight at the back.
The Robins threw everything they could at the visitors but Alexander and his defence proved up to the task.
Chris Roberts had their first chance when he cut in from the left, coasted past three defenders before unleashing a shot from the edge of the area that Alexander kept out one-handed.
26 mins: Alexander denies Roberts with a diving save
42 mins: Doherty heads wide from close range
70 mins: Tinnion is denied by a fabulous Alexander save
Cardiff showed they were not content to sit on their slim advantage and striker Robert Earnshaw was a constant threat to the home defence.
Strike partner Peter Thorne flicked the ball on and Earnshaw attempted an ambitious volley that dipped just too late with Bristol City keeper Steve Phillips scampering back and no doubt happy to see his shot drop narrowly over the bar.
A Chris Barker cross fell to Earnshaw and he showed great confidence with an overhead kick that dropped just wide of the upright.
At the other end Lee Peacock put himself about for the Robins and he somehow worked his way past a couple of challenges and into the area, but Alexander came out quickly to collect as the striker shaped to shoot.
Peacock got on the end of a free-kick from Brian Tinnion, but the impressive Daniel Gabbidon did enough to put him off and his header flashed wide.
Bristol City began to open up the Cardiff defence and captain Tommy Doherty should have done better than to glance a free header wide from 10 yards out.
Cardiff were almost gifted a goal when Robins defender Matt Hill inexplicably headed into the path of Earnshaw, but he snatched at the shot and the danger was cleared.
Hill almost made up for his moment of madness when he got on the end of another Tinnion cross but he also headed over from close range.
The recalled Tinnion provided quality in midfield for the Robins and he looked the most likely to create something for the home side.
The former Bradford and Newcastle player almost got the breakthrough himself with 20 minutes to go with a diving header that looked destined for the bottom corner.
But Alexander produced the save of the night to keep it out.
The Robins kept pouring forward but they were unable to find the break and they face a fifth successive season in Division Two.
Bristol City: Phillips, Carey, Butler, Coles, Hill, Murray,
Burnell, Doherty, Tinnion, Peacock, Roberts. Subs: Bell, Beadle,
Stowell, Amankwaah, Lita.
Cardiff: Alexander, Weston, Prior, Gabbidon, Barker, Boland,
Whalley, Kavanagh, Legg, Earnshaw, Thorne. Subs: Margetson,
Campbell, Bonner, Croft, Bowen.
Referee: J Winter (Cleveland).