After mishandling a combinational idea (see move 15), which resulted in what I thought was a rather stale-looking position, I decided to undertake a speculative "sacrifice" on move 18. Black nets three pawns for the knight, so it's not technically a material deficit, but Black still feels the loss of the piece before the pawns can mobilize effectively. Despite some additional pressure that I also obtained from placing a rook on the second rank, my opponent defended well and I decided to try and head for the endgame, where I felt with my extra pawns I would have an edge and all the real winning chances.
Unfortunately there was still enough material on the board for White to be able to gain the initiative and pose some threats - to which I reacted poorly, making what should have been a losing blunder on move 27. The seesaw battle after that was not well played by either of us, but as Tartakower said, the winner of the game is the player who makes the next-to-last mistake. I felt a little personally redeemed at the end of the game, since I correctly calculated a sequence involving a pawn sacrifice that ensured White could not prevent one of my central pawns from queening.
I learned a good deal from this game and did some rare things for me as a player (the knight "sacrifice" and finding an endgame combination), so despite the panic and poor play for a series of moves I'll chalk it up as a positive experience in general for my chess.