**EDIT:** Per Mr. Wizard's recommendation, added additional checks

    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}}