The lowest-ranked side entering the competition, the hosts had taken a first-half lead though Denis Cheryshev's blast from distance, only for Croatia to equalise through Andrej Kramaric soon after.
Domagoj Vida directed a header through traffic in the 101st minute to put Croatia ahead, but though Fernandes delivered an answer five minutes from time to force the shootout, his miss from the spot ended Russia's hopes.
An exhausted and relieved Croatia side -- only the second team to win consecutive shootouts in a single World Cup after Argentina in 1990 -- will now advance to face England in the semifinals on Wednesday.
The home fans were behind Russia, screaming every time their team went forward in an open start, though Croatia had the better of the early chances.
Ante Rebic used a fine turn in the box to take a shot from a tight angle that was pushed aside for a corner, from which Rebic headed over the bar.
Ivan Rakitic had a good opportunity from a free kick just outside the box after a quarter-hour but could not keep his shot near the target.
Croatia then began to settle into possession, only to concede against the run of play in the 31st minute.
Following a long ball forward, Cheryshev gathered and played a one-two with Artem Dzyuba to get around Luka Modric, then stepped up to launch a shot from 25 yards into the top corner, leaving Croatia keeper Subasic stranded.
The crowd erupted, but Croatia were undeterred and equalised just eight minutes later.
Working the ball quickly upfield near the sideline, Croatia got the ball into the box on the feet of Mario Mandzukic, who fed in a cross for Kramaric to head home from eight yards.
The second half was more cagey as Croatia tried to probe through Russia's back line, and Kramaric attempted a bicycle kick that was easily gathered by Russia goalkeeper Igor Akinfeev.
Russia made the first change of the match as winger Aleksandr Samedov limped off to be replaced by Aleksandr Yerokhin.
Croatia came within an inch of taking the lead on the hour mark as Akinfeev tried and failed to reach a Mandzukic cross, and the ball fell to Ivan Perisic, who tried to aim a shot inside the post only to see it come off the woodwork and roll through the six-yard box untouched.
It was Perisic's last action as he was replaced by his Inter Milan teammate Marcelo Brozovic, while Russia brought on Fedor Smolov for Cheryshev. SHARE THIS STORY USING ANY OF THE BUTTON BELOW ⬇ PLACE YOUR TEXT ADVERT BELOW ⬇⬇⬇