The 15-member Security Council on Thursday voted on two rival drafts: one humanitarian-focused resolution proposed by Germany, Belgium and Kuwait and backed by the United States; the other a text by Russia and China.
Permanent Security Council members Russia and China vetoed the first draft resolution because it did not include language that would exempt from the truce military offensives against what they called "terrorists."
Idlib residents on Friday expressed anger at the UN deadlock.
Images posted online showed placards at the protest reading: "Your silence is killing our people daily."
"Your failure to adopt a resolution is putting the lives of 3 million people at stake," another placard read.
A senior UN official told the Security Council on Thursday that an estimated 400,000 people had fled their homes in Syria's north-west in the last four months.
Ahmed Ramadan, a senior Syrian opposition figure, told dpa that the Russian veto did not come as a surprise.
"It proves that the regime of [Syrian President Bashar] al-Assad wants to continue with their killer machine against the people of Syria," Ramadan told dpa.
In recent months, al-Assad's forces, supported by Russian air power, have made military and territorial gains against the opposition.
-------------------------------------------------------------------------------------------------------------------------