EDIT: Per Mr. Wizard's recommendation, added additional checks
del[data_del[data_List, position_Integer?Positive, val_] :=
DeleteCases[data, _?(Length[#] >= position && #[[position]] == val &)]
SeedRandom[1];
data = RandomInteger[10, {5, 10}]
(* {{1, 4, 0, 7, 0, 0, 8, 6, 0, 4},
{1, 8, 5, 1, 1, 1, 3, 2, 10, 1},
{6, 0, 2, 6, 4, 5, 4, 3, 0, 1},
{3, 5, 3, 0, 3, 2, 3, 9, 5, 1},
{5, 2, 3, 9, 1, 0, 4, 4, 1, 5}} *)
del[data, 3, 3]
(* {{1, 4, 0, 7, 0, 0, 8, 6, 0, 4},
{1, 8, 5, 1, 1, 1, 3, 2, 10, 1},
{6, 0, 2, 6, 4, 5, 4, 3, 0, 1}}