Atletico came out showing uncharacteristic attacking intent in the first half and pushing Barcelona back in their area, but it was the hosts who scored first. A Messi shot in the 43rd minute was deflected but Suarez got the rebound to slot it home.
When Sergi Roberto was sent off with a second yellow in the 57th minute, Atletico saw their chances rekindle but a legitimate goal by Griezmann was disallowed incorrectly for off-side.
Atletico also went down to 10 men when Carrasco saw a second yellow on 69 minutes, but ten minutes late Gameiro, who had come on from the bench, earned a dubious penalty.
Gameiro took the penalty himself and wasted it by firing over the bar, but three minutes later he scored from an excellent assist by Griezmann.
Atletico chased the goal that would send the contest into extra-time with everything they had and missed two good chances, but the only true blow Barcelona suffered in injury time was Luis Suarez getting sent off, which means he will miss the big final.