The Piedra River is formed by the confluence of its East Fork and Middle Fork, deep in the San Juan Mountains. The Middle Fork, larger of the two, rises in a bowl-shaped valley in the San Juan National Forest. It flows southwards, and forms the Piedra after a journey of . The East Fork starts at a small unnamed lake in the Rio Grande National Forest and flows southwest for about . The Piedra flows through open meadows, then drops into a canyon, receiving O'Neal Creek from the left and Williams, Weimuche and Sand Creeks from the right. The river angles to the southwest and receives the First Fork Piedra River from the right, and after the confluence, flows more in a southerly direction. It receives Heffin and Yellowjacket Creeks, both from the right, and at the confluence with the latter, flows past the town of Piedra and crosses under U.S. Highway 160. Its canyon widens into a valley, and flowing south-southeast alongside a ridge, the river receives Devil Creek from the left and receives Stollsteimer Creek from the left at Stollsteimer. The river then angles southwest, now running alongside State Highway 151. It enters Navajo Reservoir near the town of Arboles, near the New Mexico state line. Its confluence with the San Juan River, inside Navajo State Park, is drowned under the waters of the reservoir.