The batsman reached 104 not out at the close of play as the home side finished the day 267-8 to leave them with a lead of 389 going into the final day.
The 24-year-old told BBC Test Match Special: "It's a great feeling and I can't really describe my emotions right now. It helped that [Chris Jordan] and [Stuart Broad] played positively, they really pushed me.
"I didn't really think about getting a hundred tonight but I went for it. They bowled well but I knew I just had to bat time and scoring would become a lot easier. We were always going to bat through the day I think and try and score in this last session.
"We have put ourselves in a good position to win the game. Hopefully a few will keep a bit low and if we can nip one or two out we have a good chance."
Ballance made his Test debut during the winter Ashes tour in Australia.