The 29-year-old man, who decided to stay anonymous, bought the ticket at a grocery store in Midland.
"Last year, I lost everything in a flood, so to win this prize is so overwhelming to me," he said, according to a news release from the lottery commission.
The man said he never played $20 tickets, but when he stopped to pick up some things on his way to get his kids, the Lucky 7's ticket caught his eye. He said seven is a lucky number for him.
"When I saw I had a match, I thought: 'Great, I won my money back!' When I saw I had actually won $2 million, I couldn't stop shaking."
Each Lucky 7's $20 ticket offers players a chance to win from $20 to $2 million. Four $2 million prizes remained as of Friday.
The man won $10,000 a few years ago and thought that was his once-in-a-lifetime shot. Now, he's $1.3 million richer, after opting to receive his winnings as a one-time lump sum. He plans to pay bills with the money and save the remainder.
"Knowing my kids will be taken care of is the best feeling in the world," he said.