Cardiff City edged towards promotion to the top flight for the first time in 51 years thanks to a hard-earned point at promotion rivals Watford.
The Championship leaders had goalkeeper David Marshall to thank for denying Troy Deeney with an excellent save.
Deeney missed another chance for the Hornets, who stay third, but Manuel Almunia frustrated Cardiff by keeping out Kim Bo-Kyung and Joe Mason.
Cardiff have an eight-point automatic promotion cushion with six games left.
Cardiff City's remaining games
9 April: H v Barnsley
13 April: H v Nottingham Forest
16 April: H v Charlton
20 April : A v Burnley
27 April: H v Bolton
04 May: A v Hull
Hull City's 1-0 win over Middlesbrough earlier in the day left Watford needing a win to keep their push for automatic promotion on track.
But Gianfranco Zola's side, now without a victory in their last three home games, lost ground in the race to finish in the top two after a resilient Cardiff performance.
Bluebirds boss Malky Mackay was forced to endure some anxious moments on his return to Vicarage Road.
But the former Watford player and manager saw his side dig deep to secure a result, in front of watching England manager Roy Hodgson.
There was little to choose between the two teams in a cagey first-half, with chances few and far between.
Hornets keeper Almunia spread his body to deny Bo-Kyung's deflected 18th-minute attempt after Cardiff's South Korean midfielder had cut inside the home area.
At the other end Deeney, who has scored 16 league goals this season, spurned a glorious chance after Matej Vydra's knock-down.
Cardiff's cause was not helped by the loss of Matthew Connolly to injury with the game just 10 minutes old, Kevin McNaughton coming on at right-back.
And McNaughton made a vital headed clearance to deny Ikechi Anya a goalscoring chance.
Watford's remaining games
13 April: A v Peterborough
16 April: A v Millwall
20 April: H v Blackburn
26 April: A v Leicester
04 May: H v Leeds
Watford pressed after the break and Deeney thought he had produced a breakthrough with a glancing header that Marshall did well to claw away on 55 minutes.
Cardiff were happy to soak up the pressure from the home side although they had a chance to secure all three points through Mason.
The former Plymouth player was clean through on goal after racing clear of Joel Ekstrand.
But former Arsenal keeper Almunia held his nerve to save well.
Cardiff now have three successive home games, starting at home to Barnsley on Tuesday, and could seal their place in the Premier League before the next away game at Burnley on 20 April.
- 01 Almunia
- 12 Doyley
- 17 Briggs
- 27 Cassetti Booked
- 39 Chalobah
- 40 Ekstrand
- 21 Anya
- 22 Abdi
- 38 Battocchio (Hogg - 51' )
- 09 Deeney
- 20 Vydra (Forestieri - 60' )
- 30 Bond
- 18 Pudil
- 29 Thompson
- 07 Yeates
- 08 Hogg
- 36 Geijo
- 41 Forestieri
- 01 Marshall
- 03 Taylor
- 06 Turner
- 12 Connolly (McNaughton - 10' )
- 25 Barnett
- 11 Conway (Smith - 69' )
- 13 Kim Bo-Kyung
- 17 Gunnarsson Booked
- 18 Mutch Booked
- 20 Mason (Gestede - 56' )
- 39 Bellamy
- 32 Lewis
- 02 McNaughton
- 07 Whittingham
- 08 Cowie
- 14 Smith
- 15 Gestede
- 22 Helguson
Live Text Commentary
Full Time The referee blows for the end of the match.90:00 +2:45
Inswinging corner taken right-footed by Almen Abdi from the left by-line, David Marshall makes a save.90:00 +2:31
Fernando Forestieri takes a shot. Ben Turner gets a block in.88:48
Foul by Leon Barnett on Troy Deeney, free kick awarded. Almen Abdi fires a strike on goal direct from the free kick.88:33
Foul by Rudy Gestede on Joel Ekstrand, free kick awarded. Free kick taken by Joel Ekstrand.87:19
Free kick awarded for an unfair challenge on Nathaniel Chalobah by Craig Bellamy. Direct free kick taken by Almen Abdi.84:19
Nathaniel Chalobah restarts play with the free kick.84:19 Booking
Booking The referee cautions Jordon Mutch for unsporting behaviour.84:05
Free kick awarded for a foul by Jordon Mutch on Fernando Forestieri.80:20
Bo-Kyung Kim takes a shot.78:48
Craig Bellamy takes a shot.75:26
Craig Bellamy takes the free kick.75:26 Booking
Booking Marco Cassetti is shown a yellow card.75:12
Craig Bellamy fouled by Marco Cassetti, the ref awards a free kick.73:51
Fernando Forestieri produces a right-footed shot from just outside the penalty box that misses to the left of the goal.68:45 Substitution
Substitution Tommy Smith on for Craig Conway.68:29
Fernando Forestieri takes a shot from just outside the penalty area which clears the crossbar.67:56
Nathaniel Chalobah restarts play with the free kick.67:56 Booking
Booking The referee shows Aron Gunnarsson a yellow card.67:47
Fernando Forestieri fouled by Aron Gunnarsson, the ref awards a free kick.
Craig Conway produces a right-footed shot from just outside the box that goes wide right of the goal.64:06
Free kick awarded for an unfair challenge on Bo-Kyung Kim by Joel Ekstrand. Craig Bellamy restarts play with the free kick.59:51 Substitution
Substitution (Watford) makes a substitution, with Fernando Forestieri coming on for Matej Vydra.55:37
Manuel Almunia takes the indirect free kick.55:37 Substitution
Substitution Rudy Gestede joins the action as a substitute, replacing Joe Mason.55:37
The offside flag is raised against Joe Mason.54:31
Jonathan Hogg has an effort at goal from outside the area missing to the wide right of the target.54:19
Inswinging corner taken right-footed by Almen Abdi played to the near post, Ben Turner makes a clearance.54:08
Troy Deeney takes a shot. Save made by David Marshall.53:28
Matthew Briggs fouled by Craig Bellamy, the ref awards a free kick. Nathaniel Chalobah takes the free kick.53:16
Unfair challenge on Nathaniel Chalobah by Aron Gunnarsson results in a free kick. Direct free kick taken by Nathaniel Chalobah.51:16
Kevin McNaughton fouled by Nathaniel Chalobah, the ref awards a free kick. Free kick taken by David Marshall.50:06
Direct free kick taken by Nathaniel Chalobah.50:06 Substitution
Substitution Jonathan Hogg on for Cristian Battocchio.50:06
Free kick awarded for an unfair challenge on Troy Deeney by Leon Barnett.49:51
Joe Mason is caught offside. Indirect free kick taken by Lloyd Doyley.47:49
Joe Mason takes a shot. Manuel Almunia makes a save.47:33
Free kick awarded for a foul by Aron Gunnarsson on Manuel Almunia. Direct free kick taken by Manuel Almunia.46:51
Inswinging corner taken right-footed by Craig Bellamy from the left by-line, save by Manuel Almunia.45:01
The second half begins.45:00 +2:18 Half time
Half Time The ref blows to end the first period.45:00 +2:01
Outswinging corner taken from the right by-line by Almen Abdi.45:00 +1:47
Matej Vydra takes a shot. Ben Turner gets a block in.45:00 +1:20
Outswinging corner taken by Almen Abdi from the right by-line, clearance made by Kevin McNaughton.43:04
Aron Gunnarsson challenges Cristian Battocchio unfairly and gives away a free kick. Lloyd Doyley restarts play with the free kick.39:35
Foul by Marco Cassetti on Joe Mason, free kick awarded. Direct free kick taken by Bo-Kyung Kim.38:50
Troy Deeney produces a left-footed shot from inside the area that goes over the bar.37:27
Corner taken by Almen Abdi from the left by-line to the near post.37:07
Matthew Briggs takes a shot. Aron Gunnarsson gets a block in.36:21
Free kick awarded for a foul by Leon Barnett on Troy Deeney. Free kick taken by Almen Abdi.35:53
Ben Turner has a header from close range and clears the crossbar.33:52
Shot by Cristian Battocchio went wide left of the target.32:38
The referee penalises Joe Mason for handball. Free kick taken by Manuel Almunia.32:01
Almen Abdi challenges Craig Conway unfairly and gives away a free kick. Andrew Taylor takes the free kick.30:20
Aron Gunnarsson concedes a free kick for a foul on Almen Abdi. Almen Abdi restarts play with the free kick.25:17
Corner taken left-footed by Bo-Kyung Kim.23:57
Craig Conway has an effort at goal from outside the box which goes wide right of the goal.22:34
Inswinging corner taken by Almen Abdi from the left by-line played to the near post, Aron Gunnarsson makes a clearance.20:46
Jordon Mutch fouled by Nathaniel Chalobah, the ref awards a free kick. Direct strike on goal from the free kick comes in from Craig Bellamy, Lloyd Doyley gets a block in.20:31
Craig Bellamy takes a shot. Blocked by Marco Cassetti.20:04
Foul by Andrew Taylor on Lloyd Doyley, free kick awarded. Direct free kick taken by Manuel Almunia.19:09
Unfair challenge on Craig Conway by Lloyd Doyley results in a free kick. Craig Bellamy takes the free kick.17:21
Bo-Kyung Kim takes a shot. Save by Manuel Almunia.15:25
Troy Deeney concedes a free kick for a foul on Jordon Mutch. Direct free kick taken by Andrew Taylor.11:21
Marco Cassetti concedes a free kick for a foul on Jordon Mutch. Craig Bellamy produces a shot on goal direct from the free kick.9:33 Substitution
Substitution Kevin McNaughton on for Matthew Connolly.2:46
Inswinging corner taken by Bo-Kyung Kim from the right by-line.1:26
Almen Abdi gives away a free kick for an unfair challenge on Craig Conway. Direct free kick taken by David Marshall.0:00
The game kicks-off.
Live data and text provided by our data suppliers