The home side pressed early on and went close through Jair Benitez who drilled a shot at goal from 20 yards, but his effort went just past the post.
Tesho Akindele had a better chance for the hosts when he got in behind the Salt Lake defence and rounded Rimando, but with players back on the line he lifted his shot inches over the bar.
Dallas were reduced to 10 men just before the break in controversial circumstances as Perez was sent off for a second yellow card following a clash with Chris Schuler.
The Salt Lake defender was booked for shoving the striker to the ground and Perez was given his marching orders for exaggerating the contact as he fell, much to the bemusement of his teammates.
The hosts made Salt Lake pay as they doubled their lead when Castillo picked up a loose ball 30 yards from goal and drove into the box before burying a powerful effort into the bottom corner.
Real got a goal back in stoppage time through Olmes Garcia as his overhead kick crept in at the near post, but the 10 men of Dallas managed to hold out to secure the three points.