Since what you are doing is basically sorting each row, but 0 is treated as highest value. One way is to replace all zeros with Infinity before sorting and changing back after
r = Map[If[RandomChoice[{True, False}], 0, #] &, RandomReal[RandomChoice[{0, 1Random[]}, {3, 5}], {2}]; r // MatrixForm (Sort[#] & /@ (r /. {(0 | 0.) -> Infinity})) /. {Infinity -> 0} // MatrixForm 
Edit I like Andy Ross's solution better