Timer problem, could have won
I looked over a number of your games from the past week (a few pages of the archive just looking at the number of moves) and only noticed a few with a really low number which match your description.
So, it looks fairly intermittent and could be for a lot of different reasons. Temporarily diconnecting is a likely reason and sometimes that happens without the client noticing or notifying.
As to your opponent appearing to gain time, that is a classic symptom of lag correction from their end. See the link in post 9.
Again.
Another one.

Server didn't give me a chance to play my last 16 seconds and instead it ran out my clock.
This screenshot is actually after the game ended. During actual play, my screen was stuck on the move before white did Kd3. So basically I did Rf2+, and waited for my opponent to move.
When my opponent's time ran down from 0:29 to 0:00, I figured I won. But in reality, the server got his move, didn't show it to me, and my time ran out while I was waiting for the server to show me white's move!
I haven't been playing a lot of chess lately, so this game wasn't particularly good on my part by any means, but even with all the mistakes I made, my opponent made more and I definitely could have at least made a run for a win with the remaining 16 seconds of a 1 minute game.
I used to play like 15-20 blitz games in a row, and I would say 10-15% of those games would end like this (for me or the opponent).... you can tell pretty obviously when this bug is happening to the other side... your opponent has 20-30 seconds left on the clock, you make a move and wait for a response and then his time runs out completely. And I highly doubt this is a frustration-disconnect or whatever, because in many cases when the opponent drops 30 seconds like that, I'm actually on the losing end!
What the heck is wrong with Chess.com these days...?? Almost every live game is full of errors and time issues. I lost a game recently with 7 sec left on clock in winning position while opponents clock was running.
Yes, this link has been posted time and time again.
Time adjustments made by the server to the clients based on latency/lag makes sense. But this is not what we are discussing here.
There are major issues that pop up at random intervals that:
-lock your board while your own time is ticking down internally (while makes it appear it is your opponents turn)
-do not accurately sync the server with actual-time taken
-deduct the time it takes for the server to SHOW YOU the move. Ie: your clock is ticking down while waiting to see what your opponent does!
There are also temporary disconnects that can cause that type of issue. There is an article about disconnects but it is geared towards web users.
The Incorrect timing, wrong moves or wrong touches without any sense made purposely and more are man made.
1.Warning !!! Playing online is addictive with this app after reading this review you will understand why.
2. Timing is incorrect.
They (chess.com) is cheating with the play time in favor of one of the opponents.
Sometimes It penalizes you when you are in better position or have more (captured) figures as the time starts going faster for one opponent or even "stealing" your time and increasing the time of your opponent.
Example: from better timing suddenly you encounter yourself with more or less 1 min less time left available to play.
This is made with purpose to make you angry and get addicted and play more and more.
3. Wrong touches or wrong moves - it happen all the times.( also inserted in the app with purpose. In this case go to settings to set SEND button to appear on the screen to avoid some of those wrong moves. With the Send Button Set ON you are in disadvantage, you are slower to move. but at least you can correct the move - get back.
The feature of GRAB AND DROP-OFF when you move any figure is actually one of the reason of most of the wrong moves or wrong touches. The figure the player has been is touched to move is actually GRABED and cloud fall down in any near by square.
Personally, I hate this feature.
4. Sometimes it repeat moves already done , and sometimes it doesn't recognize your move and the SEND button has to be touched several times to get accepted and it appear again and again.
About to the wrong moves or touches: when you want to play a new game it wrongly touch and play the publicity or takes you to the App Store. ( this was time ago , new updated doesn't appear)
5. If you have had set the sounds , sometimes the sounds are not played and your time is running when you think that is the turn of your opponent but actually it is your turn to move and it's your time that is running out.
When playing on iPhone you need to pay attention twice than if you play on iPad because the board is too small.
6. Sometimes , (not always) you move and wait the opponent to move and nothing happen, time is running and suddenly you lost the game because you didn't move, but how come when you are waiting the opponent's move.
Very tricky and ugly.
7. The app is asking you if you enjoy the app and if you answer NO will start crashing all the time , will not let you play with the computer.
Even if I want to buy any products from Chess.con I couldn't because I don't trust them.
How to trust somebody when he,she, they is/are cheating with the playtime.
The Incorrect timing, wrong moves or wrong touches without any sense made purposely and more are man made.
......
6. Sometimes , (not always) you move and wait the opponent to move and nothing happen, time is running and suddenly you lost the game because you didn't move, but how come when you are waiting the opponent's move.
Very tricky and ugly.
I honestly don't think any of these issues are out of malice. This are legitimite programming bugs that just haven't been addressed yet.
And as for #6 this is a common theme among myself and the other users posting in this form. Obiously it's a problem.
There are also temporary disconnects that can cause that type of issue. There is an article about disconnects but it is geared towards web users.
Sounds like the disconnect handling could use a review and some bug fixes then...
If the client reconnects, the player should not be penalized for lost time when the move has already been made client-side.
At the very least, if there isn't already move acknowledgement, that probably should be looked at, so a forced reconnect could be made if the move was never acknowledged. That would probably go a long way towards fixing many such issues. If that already exists, then making it more robust.
Today I played a game where I had 55 seconds left on my end after my last move. When it was my opponents turn, I watched his time tick from 50 seconds left to 35 seconds. He made a move and his clock jumped back to 45 seconds.
Now, that behavior is expected if his connection is laggy and he only took 5 seconds for the move. The next part is the problem.
When his move displayed, and then it was my turn, the app immediately dropped my time remaing from 55 seconds to 30 seconds. I lost 25 seconds before I even had a chance to move.
I'm going to start posting videos of this behavior.
I think it has to do with your Wifi/internet connection. There was lag and then the time passed and you didn't know it. At least you won, right? 
Heh, well no I didn't win. It lagged out again and told me the opponent won on time. But my clock said 15 seconds left.
It's horrible and can completely ruined your rating.
If you need help, please contact our Help and Support team.