Croatia came back from a goal down, were forced to penalties after a 2-2 thriller and eliminated hosts Russia on penalties to set up a semi-final against England.
Russia already caused an upset by eliminating Spain, while the Croatians started Serie A players Ivan Strinic, Ivan Perisic and Mario Mandzukic.
As expected, Croatia dominated possession, but Mandzukic and Perisic failed to find the target from promising positions.
Instead, Denis Cheryshev unleashed a left-foot missile from 20 metres out that flew into the near top corner, leaving Danijel Subasic stunned. It was his fourth goal of the tournament.
Mandzukic turned provider for the equaliser, charging down the left and pulling back for an Andrej Kramaric free header from seven yards.
Inter winger Perisic was so unlucky not to turn the game around completely on the hour mark, as his shot hit the inside of the upright, rolled all the way along the goal-line and somehow back out again.
Aleksandr Erokhin put a free header over the bar and Croatia had just completed their substitutions when Subasic pulled up with a thigh problem, but was able to continue after treatment and had his gloves stung by Fedor Smolov at the near post.
Into extra time for the second consecutive match, Croatia looked exhausted with Mandzukic and Subasic limping, yet Sime Vrsaljko had to come off injured to use up their fourth substitution.
They still managed to take the lead through a Luka Modric corner, Domagoj Vida’s header perhaps taking a deflection on the way through to sneak in.
Subasic still had to push through the pain with some good catches, but was beaten by a towering header from Brazil-born defender Mario Fernandes on a free kick to force penalties.
The first from Smolov was abysmal, a poor central chip that Subasic saved simply by sticking up a hand. However, Mateo Kovacic was denied by a low Akinfeev one-handed save in the bottom corner, but immediately after that Fernandes blasted wide.
Akinfeev got a hand to Modric’s too, but pushed it on to the post and back in, as Croatia finally had some luck to win the shoot-out and set up a semi-final against England.
Russia 2-2 Croatia (aet, 3-4 on pens)
Cheryshev 31 (R), Kramaric 39 (C), Vida 101 (C), Fernandes 114 (R)
Penalties: Smolov (R, saved), Brozovic (C, goal), Dzagoev (R, goal), Kovacic (C, saved), Fernandes (R, missed), Modric (C, goal), Ignashevich (R, goal), Vida (C, goal), Kuziaev (R, goal), Rakitic (C, goal)
Russia: Akinfeev; Fernandes, Kutepov, Ignashevich, Kudriashov; Samedov (Erokhin 54), Zobnin, Kuziaev, Cheryshev (Smolov 67); Golovin (Dzagoev 103); Dzyuba (Gazinsky 79)
Croatia: Subasic; Vrsaljko (Corluka 97), Vida, Lovren, Strinic (Pivaric 74); Rakitic, Modric; Rebic, Kramaric (Kovacic 88), Perisic (Brozovic 63); Mandzukic
Ref: Ricci (BRA)