If you've covered the earlier bases, specifically geography and climate, biomes are actually quite easy. As a first-order approximation, the predominant natural (before human intervention) biome for a region is largely determined by just two factors: precipitation and temperature. Here's a rough breakdown:
"Grassland" is really tundra in arctic and cooler subarctic areas.
I've marked a few cities: Los Angeles, Beijing, London (San Francisco is about the same), Austin, New York, and Mumbai. Note that although London and San Fran get relatively little rainfall, they have mild coastal climates with relatively little seasonal change, encouraging vegetation, while Beijing and New York have east-coast continental climates, with hotter summers and colder winters. The Gulf Stream also makes London (and all of Europe) much warmer than the same latitudes in elsewhere in the world. India's monsoon-dominated climate is a challenge for vegetation, so Mumbai is really a "monsoon forest," though its high rainfall (225 cm) would easily be enough for a tropical rain forest if the precipitation was even year-round.
Those are the two biggest factors. Next is topography, or really, drainage. A flat area will tend to collect water: if it's very dry, you'll get salt lakes, a little more and you get seasonal lakes, more and you'll get a marsh (a wetland dominated by grass), and finally if there's plenty of rain you'll get a swamp (a wetland dominated by trees). Going the other way, rugged topography mean hills. Up to a point, this typically won't have a profound impact on the biome: a rugged area with plenty of rain will be a forest just like the flatter areas nearby. Extreme slopes may prevent trees from taking root, but you might be surprised at what it takes!
On the topic of drainage, areas near rivers and lakes are basically equivalent to additional rainfall. Even a desert might have trees around the few arroyos and seasonal lakes.
Then there's elevation. All else being equal, higher land is cooler, has lower air pressure, and has greater climate variation. All of these factors tend to work against trees, and plant growth in general; a high plateau is effectively similar to moving one climate zone further from the equator. For example, South Africa is at about 30° S - the subtropical zone. However, the highlands have a climate similar to some temperate zones, which appealed to Dutch and British settlers in the 18th and 19th centuries. Note that highlands often catch rainfall from passing air currents, making them relatively green stretches in otherwise dry areas (e.g., the Atlas Mountains).
At a macro scale, that's about it. As you zoom in, there's more to consider:
- Animals, in large herds, can keep a woodland area grazed down such that only grasses and a few shrubs and trees survive. Without the buffalo, large tracts of the American great plains would eventually become lightly forested.
- Humans can irrigate dry areas, drain wetlands, fertilize marginal land, or salinate it until it's barren (usually accidentally), and even carve out mountains. Large numbers of animals (e.g., domesticated and protected from predators) in marginal grassland will cause desertification.
- Seasonality changes a biome in subtle but important ways. On the west coasts of each continent, the subtropical zone has a "Mediterranean" climate - warm dry summers and cool wet winters. This is really a variant on "subtropical moderate/woodland-savannah" biome, but it is very important for worldbuilding because this specific climate favors large grains, which your inhabitants will want to domesticate. It's no coincidence that one of the heartlands of human civilization - arguably the most important of them all - was a Mediterranean zone.
- Soil depth is important, for large plants in particular. Newly exposed volcanic islands must form soil, from erosion of the exposed rock, deposition of airborne dust, accumulated bird droppings, etc. First grass and other small plants will take root, then shrubs, and eventually trees.
- Soil quality also matters. High temperatures and high rainfall tend to leach minerals from soil. That's why many tropical rainforests are used for slash-and-burn agriculture: the soil can only support a few harvests before its limited stock of nutrients are exhausted. Because of the perpetual growing season and ample rainfall, opportunistic plants will quickly take over old plots, but restoring a true canopy forest takes a very long time.
- Variability of climate works against high-biomass biomes. So a temperate continental area with low rainfall may be a desert, while a similar area on the cost may have a Mediterranean scrub climate.
- Wind speed increases evaporation and erosion, so all else being equal a windswept area may be relatively treeless while a nearby sheltered area is more verdant.
These factors interrelate - forests reduce wind speed, decrease erosion, and may encourage rainfall (that's somewhat debatable). The good news from all this complexity is that it gives you room to fudge things: if you decide you really want a forest but the area seems too dry, it could be that the forest has very slowly been building its own soil and drawing in rainfall, and locals have been putting out fires and hunting the grazing beasts. Going the other way, you can make a desert in an otherwise bountiful area by declaring it to be a recently-exposed shield, with only a thin layer of soil on top of stone.
One last consideration: each of the biomes I listed above have many variations. A desert can be cold or warm, sandy or rocky, badlands or flats. Grassland could be steppe, pampas, prairie, or moor. Just looking at temperate forests, there's coniferous, deciduous, and evergreen, and many variations for each. Read up on what's out there, and customize your world so that each part is unique and interesting. Salt springs! Cloud forests! Mangrove swamps! Krummholz! Atolls! Use the guildelines here on Worldbuilding.SE to get a general idea of what's appropriate, then modify it to fit your story.