The teams have agreed on which players will be exchanged, as well as the financial terms that will address the $23 million remaining on Oswalt's contract, according to a major league source with knowledge of the deal.
The Astros will pay $11 million of money remaining on Oswalt's contract through next year, according to a source.
In return for Oswalt, the Astros would get back left-handed starter J.A. Happ and two prospects, according to sources.
While the Phillies prospects have not been identified, sources said the Astros have pressed hard for first baseman Jonathan Singleton, considered the team's best minor-league hitting prospect. Singleton is currently at Class A Lakewood in the South Atlantic League, where he was hitting .312 with 18 doubles and 12 home runs as of Thursday.
It is now up to Oswalt to decide whether to waive his no-trade clause.
The agreement on trade terms was first reported by KRIV-TV in Houston.
There have been doubts about whether Oswalt is willing to waive his no-trade for a move to the Phillies. Despite reports to the contrary, the Phillies have gotten no indication that the 32-year-old right-hander has dropped his request that the Phillies pick up his option for 2012. The Phillies have already balked at that demand.
Oswalt has hinted he might be willing to restructure his contract or compromise on that request. But there has been no indication that he would approve a deal without some sort of financial inducement.
Now that the Phillies have taken outfielder Jayson Werth off the market, they would no longer be able to clear money off their $142 million payroll to absorb the approximately $5 million that remains in Oswalt's salary for the rest of this year.
So they have asked the Astros to pay a significant portion of Oswalt's money. He has a $16 million guarantee for next season, plus either a $2 million buyout or a $16 million option for 2012.
A further sign that the Phillies remain the favorite -- and perhaps the only team left -- in talks for Oswalt is that the two other clubs that had been in the bidding, the St. Louis Cardinals and Los Angeles Dodgers, have moved on to pursue other players.
The Cardinals have concentrated on second-tier starters and on an infield bat. The Dodgers, meanwhile, made a trade Wednesday for Royals outfielder Scott Podsednik, and were more focused on trying to trade for Cubs pitcher Ted Lilly or Pirates pitcher Paul Maholm than they were on continuing talks for Oswalt.
Nevertheless, it was also clear the Phillies weren't particularly confident that they were going to be able to trade for Oswalt themselves. They made contact with the Cubs about Lilly and with the Indians about right-handers Jake Westbrook and Fausto Carmona. And they had a scout in Cleveland to watch Carmona's start against the Yankees.
With less than 72 hours remaining before Saturday's 4 p.m. ET deadline, Oswalt remained the Phillies' top priority, sources said. But Oswalt told MLB.com on Wednesday that he wants "a little bit of time" to decide whether to approve any trade the Astros agree to.
"I'm hoping it's not going to be dropped on me an hour before the deadline," he said.
Oswalt didn't specify how much time he would need. But regardless, for the Phillies and Astros, the clock is ticking louder than ever.
Jayson Stark is a senior baseball writer for ESPN.com.