The South American side took an early lead after an Irene Paredes own-goal in the sixth minute left one of the best national teams in the world stunned.
Similar to Spain’s quarter-final clash with Colombia, Spain dominated possession but struggled to find an equaliser, or even test Brazil’s goalkeeper Lorena. La Roja would go on to have 76% possession come full-time.
Against the run of play, Brazil doubled their advantage after Gabi Portilho’s strike squeezed into the bottom right corner four minutes into added time.
City’s Laia Aleixandri was introduced to the fold on 52 minutes with Spain looking for fresh legs in defence.
As Spain had to commit bodies forward with only 20 minutes left to play and in search of two goals, Brazil capitalised.
After an unsuccessful Spanish corner, a quick counter and seconds later Brazil had a third. Substitute Adriana nodded home at the far post to add further frustration to Spain’s disappointing performance.
Aleixandri and her team-mates continued to attack, testing Brazil’s defence with chance after chance.
A slight slip in concentration saw Salma Paralluelo’s headed effort creep past the Brazilian defence and ‘keeper to make it 3-1 with five minutes left.
Alexia Putellas’ ranged effort two minutes after the restart looked goal bound but Lorena palmed the ball away, a sign of her vital performance in between the sticks for her nation.
Four minutes later, substitute Kerolin confirmed Brazil’s spot in the final with their fourth and final goal of the evening. She slotted the ball under Cata Coll’s legs from just inside the box one minute into added time.
Paralluelo scored her second and Spain’s second consolation goal of the evening 12 minutes into added time but neither of her strikes were celebrated whilst Brazil couldn’t contain their excitement when the full-time whistle blew.
This means Brazil will take on USA in the final and Spain will face Germany in a clash for the bronze medal.