Chelsea took a giant step towards setting up a second all-English Champions League final with a 0-0 draw in Barcelona tonight.

They produced an outstanding rearguard action to nullify Barcelona's much-vaunted attacking threat which has seen them blow away Bayern Munich in the quarter-final.

Barcelona were well on top in the first half but, save for one sprawling save from Petr Cech to keep out a Thierry Henry daisy-cutter, they rarely looked like breaching the Blues' defence.

Although they had Michael Ballack and Alex booked in quick succession, it was Chelsea that came closest to a first-half goal.

Didier Drogba capitalised on a short backpass seven minutes before the break and raced into the box only for Victor Valdes to make a great stop and also stop Drogba's follow-up effort.

Chelsea posed more of a threat after the break and Ballack flashed a header just wide from Drogba's free kick. An injury to Marquez and a booking for his replacement Puyol, that rules him out of the second leg, added to Barca's frustration.

But they might have won it with Lionel Messi volleying over and Daniel Alves forcing a save out of Cech and seeing a 30-yard free kick go just over.

Then Samuel Eto'o raced through only to be denied by Cech's legs. Barca should have won it deep into stoppage time, but sub Bojan headed over when it looked easier to score.

Then Alex Hleb was foiled by a fine Cech save to secure a vital clean sheet for Guus Hiddink's men, the first achieved by a visiting side in Barcelona this season.

Skipper John Terry said: "We haven't created too many chances, but we haven't conceded and that is a good thing here."