The two sides exchanged early scoring chances in back-to-back minutes of the Western Conference match-up, which Sporting KC played without captain Matt Besler while serving a one-game suspension.
Rookie right back Amadou Dia beat two defenders along the endline before having his shot stopped by FC Dallas goalkeeper Chris Seitz from close range in the sixth minute. On the opposite end of the field, Fabian Castillo showcased a dribbling display of his own only to be turned away by Chilean goalkeeper Luis Marin.
Perez opened the scoring in the 17th minute, starting the play with a flick forward at midfield then sprinting into the penalty area to receive a pass from reigning Rookie of the Year Tesho Akindele. Perez made no mistake with a first-time finish inside the near post for his second goal in as many games after scoring a stoppage-time game winner in his team's 1-0 season-opening victory last week.
Sporting Kansas City came close to equalizing in the 27th minute when Graham Zusi's corner kick connected with Week 1 goal scorer Ike Opara. The centerback re-directed the service toward the target but his right-footed attempt rolled wide of the post.
The game-tying goal would come in the aftermath of a Zusi corner kick, initially cleared from danger but ultimately buried into the back of the net on a 20-yard strike from Espinoza in the 44th minute. The Honduran received a pass from fellow World Cup veteran Benny Feilhaber and took two touches into space prior to unleashing a left-footed effort for his third career MLS goal and first since 2011.
Espinoza celebrated in front of more than 800 traveling Sporting KC supporters who made the eight-hour drive from Kansas City for Saturday's away match.
It was another Espinoza run through the midfield that nearly gave Sporting Kansas City the lead in the 47th minute.
He weaving his way through 35 yards in the attacking half and picked out Krisztian Nemeth at the edge of the penalty area. The Hungarian striker cut inside to set up a right-footed shot that missed the near post by a narrow margin.
FC Dallas, who are now 12-1-2 in their past 15 home games across all competitions, seized control of the match with a controversial game-winning goal in the 52nd minute. Michel's corner kick was sent back to the Brazilian, whose second service into the penalty area found Perez in an offside position. However, no whistle came and Perez calmly chested the ball down for a simple finish from five yards out.
Sporting Kansas City threatened to pull level again in the 69th minute when Zusi split two defenders with a clever pass for Paulo Nagamura on the right side of the penalty area. Nagamura sent a tantalizing cross into the path of Dom Dwyer, whose sliding shot was saved by Seitz.
Castillo, a 10-goal scorer a year ago, then put the game out of reach with his goal in the 73rd minute. Michel earned another assist, threading a pass forward for second-half substitute Ryan Hollingshead who played the ball into the path of Castillo to cap the counter attack with a touch around Marin and emphatic finish into the empty net.
Tied with Feilhaber for the League lead in assists, Michel was inches away from putting an exclamation point on his two-assist performance only to see his free kick rattle the crossbar in the 76th minute.
Down two goals, Sporting KC Manager Peter Vermes inserted 2015 acquisition Bernardo Anor with 15 minutes to play.
The move paid dividends two minutes later when the Venezuelan was fouled inside the penalty area while challenging to get on the end of a free kick from Zusi.
Dwyer stepped to the penalty spot - where he was successful in seven of his eight attempts last year - however Seitz extended powerfully to his right to make the stop. Seitz has now conceded only six of the 10 penalties he has faced in his MLS career, including none of the past three over the last four seasons.
Sporting Kansas City will now return home to host the Portland Timbers at 7:30 p.m. CT on Saturday, March 21 at Sporting Park.
A limited number of tickets are available via Ticketmaster.com while supplies last and the match will be shown live on SKCTV with pregame coverage starting at 7 p.m. CT.