Gabriel Jesus and Roberto Firmino scored the goals as Brazil beat arch-rivals Argentina 2-0 on Tuesday to qualify for the Copa America final.
Jesus and Firmino netted a goal apiece in each half to give Brazil a victory which ensured Lionel Messi’s frustrating wait for a major international tournament title with Argentina continued.
Hosts Brazil will play the winners of Wednesday’s second semi-final between champions Chile and Peru in Sunday’s final.
It was the first time these age-old rivals had met in a major competition since Brazil beat Argentina 3-0 in the 2007 Copa final.
English-based Jesus and Firmino were the stars, each creating the other’s goal, although captain Dani Alves had a major say in the opener.
“It was another step towards our objective. We’re achieving all the goals that we’re setting ourselves,” said Alves.
“A lot of people doubt us but we have a lot of faith in ourselves, in our plan, in our hard work.
“We’re reaping the fruits of the seeds we’re sowing every day.”
But it was a miserable night for Messi, whose hopes of landing a major international honour with Argentina ended in disappointment once again.
He will get another opportunity next year, though, with the fourth Copa America in the last five years, due to be played in Argentina and Colombia.
“We should have been the team going to the final because we deserved it, no doubt about that. But sometimes football is unfair,” complained Argentina coach Lionel Scaloni.
In what was always expected to be a feisty affair there were some wild early tackles flying in, and Argentina’s Nicolas Tagliafico was first to be booked for a lunge at Jesus.
The uneven pitch looked like it had been trampled by a herd of wildebeest before kick-off and both sides struggled to play flowing football.
Brazil’s Casemiro was even jeered after sending a long crossfield ball straight out of play.
The first chance came when Argentina’s Leandro Paredes let fly from 30 yards but the ball whistled just over the top of goalkeeper Alisson’s goal.
Brazil took the lead on 19 minutes after a piece of individual brilliance from Alves.
He beat three players on a mazy run before sending Firmino clear down the right with a no-look pass, the Liverpool forward crossing for the unmarked Jesus to tap home.
Two-footed lunges were flying in as the match threatened to descend from niggly to dirty.
Argentina almost levelled on the half hour when Sergio Aguero headed Messi’s free-kick onto the bar, the ball bouncing down just in front of the line before Brazil scrambled it clear.
Messi then burst into life, driving at heart of the Brazil defense and playing in Aguero, who took advantage of a Thiago Silva slip to make space for himself but Marquinhos was quickly across to block the Manchester City striker’s shot.
Moments later, Messi beat two men on the right, won back the ball with a sliding tackle after overrunning it, but then wastefully shot high and wide.
At the other end, Arthur shot powerfully, but straight at goalkeeper Franco Armani.
Argentina pushed Brazil back at the start of the second half and Aguero picked out Lautaro Martinez in the box but he didn’t catch his left-foot volley cleanly and Alisson gathered comfortably.
Another promising attacking move ended with Rodrigo de Paul blazing over from 20 yards.
But Jesus produced a beautiful piece of skill, including a pirouetting drag-back, before teeing up Philippe Coutinho who should have done better than shooting over.
Moments later, though, a blocked shot from Martinez looped over to Messi who lashed a shot from an angle against the post, with Alisson beaten.
Alisson was alert to clutch a Messi free-kick on 66 minutes that looked destined for the top corner.
By then, Scaloni had already gone for broke, bringing off midfielder Marcos Acuna and sending on speedy winger Angel Di Maria, with Messi dropping into a deeper role.
Just as Argentina looked capable of finding a way back into the match, Brazil stung them on the counter-attack with Manchester City’s Jesus getting away from two defenders and teeing up the unmarked Liverpool striker Firmino for a tap in on 71 minutes.
Scaloni threw on another forward in Paulo Dybala but there was no way back for Argentina.