Kansas City will host either Portland or Real Salt Lake on Dec. 7.
Sporting and the Dynamo played to a scoreless draw two weeks ago in the first leg. Houston, the runner-up in 2011 and 2012, will miss the title game for the first time in three years.
"As far as this series, we deserved it," Sporting manager Peter Vermes said. "We played smart and … showed real maturity. Three years ago I think we were very new to this when we played them in the same situation. We were very new, in everything. I even think our fans were new to it. There was a lot of apprehension that year, but I think this year was very different. I think the players understood the task at hand. Even though they scored early, we never panicked."
Houston midfielder Brad Davis acknowledged being disappointed to not make it back to a third straight final, but said it was an accomplishment for the Dynamo to get as far as they did after finishing fourth in the East during the regular season.
"It's very difficult. I'm unbelievably proud to be a part of this team," Davis said. "I feel like people were counting us out a long time ago and we kept plugging away. That's what this team does."
The Dynamo scored on a goal from Oscar Boniek Garcia, whose shot deflected off center back Matt Besler after a pass from Davis.
Sapong responded in the 14th minute, scoring from short range after Houston defender Bobby Boswell misplayed Graham Zusi's through ball. Dwyer's decisive goal came after a precise through ball from Benny Feilhaber, with Dwyer finishing low past Dynamo keeper Tally Hall.
"That was one of the classier goals you'll see," Hall said. "His cut and finish made for one of the better goals I've seen this year."
MLS title game
P Sporting KC vs. RSL/Portland winner, Dec. 7, 2 p.m. MST
TV • ESPN