No, you can't show parts of a layer above another layer and others below. That is simply contrary to the concept of the layer management / TOC used in QGIS.
All possible workarounds will mean adding an additional layer to the TOC.
However: You do not have to create additional files!
Create a field that holds some value to decide which lines should be above or below. this can be anything (string, int, ...) .
Then, use the add vector layer / file option and add it like this:
C:\wip\test.shp|subset=MYSPECIALATTRIBUTE = 'I am the king of the world!'
MYSPECIALATTRIBUTE = this is the name of the field
The second part is what this vaue should be so it is loaded.
You didn't write what decides the layering, so I'll give examples:
This could be the three layers:
C:\wip\test.shp|subset = order = 3
C:\wip\test.shp|subset = order = 2
C:\wip\test.shp|subset = order = 0
C:\wip\test.shp|subset = surfacetype = 'Gravel'
C:\wip\test.shp|subset = surfacetype = 'Asphalt'
C:\wip\test.shp|subset = surfacetype = 'Lava'
These then show up as individual layers in the TOC and you can sort them however you want. They all access the same underlying file. Their attribute tables will be limited to their specific subset, but any change you do will be reflected on the central file as well.
Sadly, I did not find any documentation regarding the possible options of loading subsets of shapefiles. I know there are a couple others (e.g. layerid instead of subset), just can't find them.
Layers do not equal files.
Layers only deal with the visual representation of data.