How to prevent graphics clipping through each other

I recommend using tubes to represent thick lines in 3D graphics. They look better because they are true 3D objects with circular cross-setions and not flat ribbons, which are how thick lines are drawn in 3D graphics.

Graphics3D[
  {{Black, Sphere[{0, 0, 0}, 0.1]}, {Red, Tube[{{-1, 0, 0}, {1, 0, 0}}, .04]}},
  PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}},
  ImageSize -> Medium]

graphics

Update

This update is added to address a question asked by the OP in a comment to this question.

No, you can't use an InfiniteLine as the spine of a tube. However, it not too hard to roll your own version (pun intended) of Tube that I think will mimic an infinite tube well enough for your purposes.

Here is a sketch of how it might be done. For industrial use. the function, at minimum, would need to be rewritten with guards placed on its arguments.

directedLongTube[p_, v_, r_, k_: 100.] := Tube[{(p - k v), (p + k v)}, r]

where

$\qquad p\quad$point the tube is centered on
$\qquad v\quad$direction vector of the tube
$\qquad r\quad$radius of the tube
$\qquad k\quad$extension factor of the tube

$k$ should be large enough so the tube will extend outside the bounding box of the plot in both directions.

Example

SeedRandom[1]
With[
    {center = RandomReal[2 {-1., 1.}, 3],
     directions = RandomReal[{-1., 1.}, {10, 3}],
     colors = Hue /@ Subdivide[9]},
  Module[{tubes},
    tubes =
      MapThread[{#1, directedLongTube[center, #2, .25]} &, {colors, directions}];
    Graphics3D[{{Gray, Sphere[{center}, 1]}, tubes}, 
      PlotRange -> 5 {{-1, 1}, {-1, 1}, {-1, 1}},
      Boxed -> False]]]

graphics