City forwards Jon Parkin and Oliver both had chances inside the first 10 minutes, but it was the latter who broke the deadlock after quarter of an hour.
Amari Morgan-Smith was fouled 30 yards out and Parkin's low free-kick struck the frame of the goal only for Oliver to tap into an empty net at the opposite post.
Oliver made it seven goals in 10 games in the 31st minute when he played a one-two with Asa Hall and curled the ball inside Nathan Baxter's left-hand post, but Harry White gave the Moors hope with a great 25-yard free-kick deep into first-half stoppage time.
Solihull should have equalised two minutes into the second half when White burst clear, but City keeper Scott Loach pushed his shot against the post, while George Carline also spurned a great chance to level from close range.
Match report supplied by the Press Association.
Match ends, Solihull Moors 1, York City 2.
Second Half ends, Solihull Moors 1, York City 2.
Simon Heslop (York City) is shown the yellow card for a bad foul.
Substitution, Solihull Moors. Omari Sterling-James replaces Connor Franklin.
Substitution, Solihull Moors. Ashley Sammons replaces Hafeez Sanusi.
Substitution, Solihull Moors. Oladapo Afolayan replaces Nortei Nortey.
Kristian Green (Solihull Moors) is shown the yellow card for a bad foul.
Substitution, York City. Shaun Rooney replaces Danny Holmes.
Shaun Rooney (York City) is shown the yellow card for a bad foul.
Second Half begins Solihull Moors 1, York City 2.
First Half ends, Solihull Moors 1, York City 2.
Goal!  Solihull Moors 1, York City 2. Harry White (Solihull Moors).
Connor Franklin (Solihull Moors) is shown the yellow card for a bad foul.
Goal!  Solihull Moors 0, York City 2. Vadaine Oliver (York City).
Goal!  Solihull Moors 0, York City 1. Vadaine Oliver (York City).
First Half begins.
Lineups are announced and players are warming up.
Vadaine Oliver's first-half double gave York a crucial 2-1 victory in a relegation battle with free-falling Solihull, who slumped to their sixth successive National League defeat.