Miami won an ugly contest 14-12 on Saturday afternoon at Virginia.

It was a no touchdown affair that was settled via two-point conversions in overtime. Both offenses failed to clear 330 total yards.

Here are three takeaways from the Canes’ win:

Miami’s offense hits rock bottom, again

Facing one of the worst defenses in the ACC didn’t help jumpstart the Canes’ offense. Miami gained just 272 yards in this game, including a pair of overtime periods that saw the Canes kick two field goals.

Jake Garcia, starting in place of the injured Tyler Van Dyke, completed just 15-of-29 passes for 125 yards. However, there was significant improvement in the turnover department in this game. The Canes had zero giveaways in this game after turning it over eight times last week.

Garcia did make the game-winning play in the third overtime with a rushing score on the two-point conversion. Here’s the final play:

Henry Parrish Jr. and Xavier Restrepo showed progress

Running back Henry Parrish Jr. was the lone bright spot offensively. He carried the ball 24 times for 113 yards in this contest.

The return of Xavier Restrepo to the lineup is also notable. He played in a game for the first time since September as he recovers from an injury. He caught one pass for 11 yards but could be more involved in the offense moving forward.

Bowl hopes are still alive

Miami is now 4-4 on the season. Things have looked bleak for the Canes so far this year, but their postseason hopes are still alive.

Miami still has games remaining vs. Florida State, Georgia Tech, Clemson and Pittsburgh. The Canes are likely to be underdogs in three of those games, but should be favored vs. the Yellow Jackets. Pittsburgh has also looked vulnerable in recent weeks.

The Canes host Florida State next weekend at Hard Rock Stadium.