Melt butter in a dutch oven over medium-high heat.
Add onion and 1/2 teaspoon salt and cook, stirring frequently, until softened, about 3-5 minutes.
Add garlic and cook until fragrant, about 30 seconds.
Add water, ham steak, peas, bacon, thyme and bay leaves. The bacon should be raw and is really only being used for flavoring.
Increase heat to high and bring to a simmer, stirring frequently so the peas don’t stick to the bottom.
Reduce heat to low, cover and simmer until peas are tender but not falling apart, about 45 minutes.
Remove ham steak, cover with aluminum foil to prevent drying out, and set aside.
Stir in carrots and celery; continue to simmer, covered, until vegetables are tender and peas have almost completely broken down, about 30 minutes longer.
When cool enough to handle, shred ham into bite-size pieces with 2 forks.
Remove and discard thyme sprigs, bay leaves, and bacon slices.
Stir ham into soup and return to simmer.
Season with salt and pepper to taste. Sprinkle with croutons and serve.