M25-29 · MARATHON
M25-29: Ulrich Grinds Out a Hard-Fought Win on the San Francisco Streets
- Billy Ulrich, 2:27:48 (5:38/mi) claimed the M25-29 title, posting the fastest men's split on the 2M→4M segment and trading punches at the front all morning before sealing it.
- Ian Tibbals improved from 8th here in 2025 (2:35:56) to 2nd in 2:30:43 — a 5:13 swing — powered by the 2nd-fastest men's split on the 18M→20M stretch.
- Jack Rosencrans ran the most aggressive back half in the group, climbing from 19th among men at the first checkpoint all the way to 5th at the line in 2:34:43, including the 2nd-fastest men's split on the 20M→22M segment.
- 1,176 finishers made M25-29 one of the largest fields on the course, with the top 20 alone spanning a 27-minute range from Ulrich's 2:27:48 to Paul Sasieta Arana's 2:55:31.
Billy Ulrich's win did not come easy. The Boulder, CO 29-year-old was a live contender from the gun — sitting 3rd among men through the opening miles — and he posted the fastest men's split on the 2M→4M stretch to seize the lead by the next check. But this was a race of constant pressure: his gender standing yo-yoed between 1st and 2nd throughout, and he never fully shook the field. When the fog lifted on San Francisco's hills and the 15 mph wind kicked in off the bay, Ulrich simply held his form better than anyone else in the 25-29 bracket, finishing in 2:27:48 at a 5:38/mi clip.
The runner-up story belongs to Ian Tibbals, and it's a compelling one. Twelve months ago, Tibbals finished 8th among men here in 2:35:56. He came back in 2026, moved steadily from 8th to 3rd among men over the final third of the race, and crossed in 2:30:43 — a 5:13 improvement. That late surge was no accident: his 2nd-fastest men's split on the 18M→20M segment shows exactly where he made his move. Jordan Crist rounded out the podium in 2:32:05 (5:48/mi), himself responsible for the 2nd-fastest men's split on the same early 2M→4M segment where Ulrich led — meaning those two were the class of the field through the opening miles.
The race's biggest climber was Jack Rosencrans. Starting 19th among men, he was still 15th at the midway point — then turned on the jets. His 2nd-fastest men's split on 20M→22M powered a late charge that landed him 5th in 2:34:43. Meanwhile, local San Franciscan Sheel Patel showed early promise — sitting 5th among men through the first six miles — but faded to 11th by the finish, crossing in 2:37:17. Sean Rager (2:37:59) and Ian Miller (2:38:10) finished 6th and 7th, separated by just 11 seconds after 26.2 miles of racing.
The course
AI recap · generated from official results
