Keene is in central Johnson County, Texas. U.S. Route 67 runs through the city's southern side, leading east 7 miles to Alvarado and west 5 miles to Cleburne.
Keene has a total area of 5.0 square miles, of which 4.9 square miles are land and 0.1 square miles, or 1.66%, are water. Keene sits on a regional watershed divide, with the northern and eastern sides of the city draining to Turkey Creek, part of the Trinity River watershed, and the southern and western sides draining to East Buffalo Creek, part of the Brazos River watershed.