The San Francisco 49ers pulled off a come-from-behind 24-21 win over the Dallas Cowboys in Week 1 of the preseason Thursday night. But as the injuries piled up, the victory seemed more costly than rewarding.

On a positive note, the San Francisco 49ers are 1-0 this 2018 preseason, and quarterback Jimmy Garoppolo still hasn't lost a game in which he's started. This, despite Garoppolo going only 3-of-6 on his first, and only, drive of the contest Thursday night against the Dallas Cowboys at Levi's Stadium.

Overall, head coach Kyle Shanahan's first-team offense struggled to move the ball at all during the opening quarter. While Garoppolo did connect with wide receiver Marquise Goodwin on two third-down tries, the quarterback's first drive ended in a punt.

Support this writer and shop Amazon

Dallas, however, managed to score on its opening possession -- capped off by a 30-yard touchdown pass by Cowboys quarterback Dak Prescott to rookie wide receiver Michael Gallup, who was being covered by the veteran, Jimmie Ward. Ward apparently didn't see the ball in the air, due to sunlight glare. But Ward wasn't exactly locked in on coverage with Gallup either.

While the Cowboys garnered most of the momentum early, San Francisco's eventual victory was marked more by injury than anything else.

Shortly after registering a combined sack with defensive tackle DeForest Buckner, fellow lineman Solomon Thomas suffered what appeared to be a concussion after taking a foot to the helmet. He was able to walk off the field with some assistance, but it's likely he'll see some time away.

Meanwhile, linebacker Malcolm Smith -- Smith was playing in his first actual game in a 49ers uniform after missing 2017 with a pectoral injury -- exited early with a hamstring injury. It's not expected to be serious, according to head coach Kyle Shanahan (h/t KNBR 680's Brad Almquist), but there were a few other injuries that easily could be.

On that first 49ers offensive drive, tight end George Kittle attempted to run a deep route down the center of the field. Garoppolo's pass sailed over Kittle's head, and the second-year tight end fell awkwardly on his right arm as shown in the clip below:

Kittle immediately got back up but was nursing his right shoulder in what appeared to be a clavicle injury.

Additionally, running back Matt Breida suffered a shoulder injury.

"Kittle and Breida have a shoulder injury," Shanahan told reporters after the game. "I don't know how long, but it's going to be some time before [they're back]. I'd be surprised if they were back next week."

Shanahan also confirmed both Thomas and swing tackle Garry Gilliam left with concussion-like symptoms.

49ers.com's Joe Fann later confirmed Kittle's injury wasn't to his collarbone, which is good news. But it's likely Kittle will be out for some time.

The Niners fell behind 14-7 entering the second half but managed to close the gap after a field goal on their second drive. Rookie wide receiver Dante Pettis helped set up that play with a 53-yard grab from quarterback C.J. Beathard, who was 10-of-20 for 181 yards and an interception off a tipped pass during the game.

Beathard had three tipped passes, and he could have had a fourth had it not been negated by a Cowboys penalty.

In Pettis' debut, the rookie wideout out of Washington had only that one grab, dropped another and mistimed a route connection with Beathard. But that 53-yard grab was something notable.

However, San Francisco's most impressive rookies were wide receiver Richie James and defensive tackle Jullian Taylor. James ended up with a team-leading four receptions for 46 yards and the game-winning touchdown off the hand of third-string quarterback Nick Mullens. Taylor, who was starting in place of defensive tackle Arik Armstead at the big end, stayed in the game throughout the contest. All Taylor did was register three tackles, two quarterback hits and a sack.

Not bad for a rookie seventh-round pick, who seems poised for placement on the 49ers' 53-man roster.

James' touchdown grab with 18 seconds remaining in regulation capped off 14 unanswered points from San Francisco, and it seems as if Shanahan will have a tough time keeping the rookie receiver off the roster too.

The 49ers will have a day off on Friday and a players' day off Saturday before resuming training camp practice this Sunday, Aug. 12 before preparing for their preseason Week 2 contest against the Houston Texans on Saturday, Aug. 18 from NRG Stadium.

Peter Panacy has been writing about the 49ers since 2011 for outlets like Bleacher Report, Niner Noise, 49ers Webzone, and is occasionally heard as a guest on San Francisco's 95.7 FM The Game. Feel free to follow him, or direct any inquiries to @PeterPanacy on Twitter.

This site is neither endorsed, nor sponsored by, nor affiliated with San Francisco 49ers or NFL Properties LLC. 49ers is a registered trademark of the San Francisco 49ers LLC. All teams and players mentioned are registered trademarks of the NFL and its respective teams. The use of any team names, words, trademarks, logos or photos have been used for descriptive purposes only. The content and information from other sites is the property of their respective owners. Player and team photos used with permission from USA TODAY Sports Images.